在异步模式下运行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()?
答案 0 :(得分:1)
主线程的退出代码等于进程IMHO的退出代码。
答案 1 :(得分:0)
为了获得主进程线程的退出代码 - 必须获取其HANDLE
。不幸的是ShellExecuteEx
没有返回给你(它只返回新创建的进程的HANDLE
)。
还可以枚举特定进程中的所有线程并打开其句柄(OpenThread
)。因此,您可以创建一个处于“挂起”状态的进程,获取其唯一线程的句柄(尚未开始执行),然后继续。
唉,ShellExecuteEx
既不允许您在暂停状态下创建新进程。
所以我没有看到一种干净的方式来实现你想要的。我建议如下:
CreateProcess
。它具有所需的功能。