在异步模式下运行ShellExecuteEx()后,如何检索主线程的退出代码?
可以按如下方式简单地检索进程退出代码:
SHELLEXECUTEINFO execInfo;
execInfo.cbSize = sizeof(SHELLEXECUTEINFO);
execInfo.fMask = SEE_MASK_NOASYNC;
ShellExecuteEx(&execInfo);
/* Get process exit code. */
DWORD processExitCode;
GetExitCodeProcess(execInfo.hProcess, &processExitCode);但是如何检索主线程的退出代码呢?应该向GetExitCodeThread()传递什么?
发布于 2010-11-07 20:33:08
为了获得主进程线程的退出代码,必须获取它的HANDLE。不幸的是,ShellExecuteEx不会返回这个(它只返回新创建的进程的HANDLE )。
还可以枚举特定进程中的所有线程并打开它们的句柄(OpenThread)。因此,您可以创建一个处于“挂起”状态的进程,获得其唯一线程(尚未开始执行)的句柄,然后继续。
遗憾的是,ShellExecuteEx都不允许您在挂起状态下创建新进程。
所以我看不到一个干净的方法来实现你想要的。我会提出以下建议:
CreateProcess的enough?发布于 2010-11-05 22:01:52
主线程的退出代码等于进程IMHO的退出代码。
https://stackoverflow.com/questions/4106526
复制相似问题