![](/img/trans.png)
[英]How to run a process with ShellExecuteEx as as a child that closes after parent exit?
[英]Get Thread exit code after running ShellExecuteEx
在異步模式下運行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()?
主線程的退出代碼等於進程IMHO的退出代碼。
為了獲取主進程線程的退出代碼,必須獲取其HANDLE
。 不幸的是, ShellExecuteEx
不會返回此值(它僅返回新創建的進程的HANDLE
)。
還可以枚舉特定進程中的所有線程並打開它們的句柄( OpenThread
)。 因此,您可以創建處於“掛起”狀態的進程,獲取其唯一線程(尚未開始執行)的句柄,然后繼續。
Execute, ShellExecuteEx
都不允許您在掛起狀態下創建新進程。
因此,我看不到一種實現所需目標的干凈方法。 我建議以下內容:
CreateProcess
。 它具有所需的功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.