首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行ShellExecuteEx后获取线程退出代码

运行ShellExecuteEx后获取线程退出代码
EN

Stack Overflow用户
提问于 2010-11-05 21:59:43
回答 2查看 2.6K关注 0票数 0

在异步模式下运行ShellExecuteEx()后,如何检索主线程的退出代码?

可以按如下方式简单地检索进程退出代码:

代码语言:javascript
复制
SHELLEXECUTEINFO execInfo;
execInfo.cbSize = sizeof(SHELLEXECUTEINFO);
execInfo.fMask = SEE_MASK_NOASYNC;

ShellExecuteEx(&execInfo);

/* Get process exit code. */
DWORD processExitCode;
GetExitCodeProcess(execInfo.hProcess, &processExitCode);

但是如何检索主线程的退出代码呢?应该向GetExitCodeThread()传递什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-07 20:33:08

为了获得主进程线程的退出代码,必须获取它的HANDLE。不幸的是,ShellExecuteEx不会返回这个(它只返回新创建的进程的HANDLE )。

还可以枚举特定进程中的所有线程并打开它们的句柄(OpenThread)。因此,您可以创建一个处于“挂起”状态的进程,获得其唯一线程(尚未开始执行)的句柄,然后继续。

遗憾的是,ShellExecuteEx都不允许您在挂起状态下创建新进程。

所以我看不到一个干净的方法来实现你想要的。我会提出以下建议:

  1. 为什么你想要主线程的退出代码?也许进程的退出代码将是使用CreateProcess的enough?
  2. Consider。它有必要的functionality.
  3. Some脏技巧可能会有所帮助,比如将DLL注入到新创建的进程中(挂钩)等。
票数 0
EN

Stack Overflow用户

发布于 2010-11-05 22:01:52

主线程的退出代码等于进程IMHO的退出代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4106526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档