如何获取流程的返回值?基本上我是** ShellExecute()来自DLL的一个.NET进程(在C ++中)。该过程完成其任务,但现在我想知道它是成功还是失败。如何在WinAPI或MFC中执行此操作?
答案 0 :(得分:5)
使用CreateProcess()。保持进程句柄并在进程句柄发出信号时调用GetExitCodeProcess()。
答案 1 :(得分:2)
使用ShellExecuteEx
代替您,以便获取已启动的流程的句柄。然后,您应该可以使用GetExitCodeProcess
来获取退出代码。
(我在这里留下了这个答案,尽管MSalters中有类似的答案,因为我怀疑你是故意使用ShellExecute
获取shell行为而不是显式创建进程。)
答案 2 :(得分:0)
ShellExecute()在其本机中是16位调用,所以它不打算提供反馈/回调,尽管你可以搜索线程/进程/内存地址(如果你找到可用的内存空间)及其标志(如果有的话)没有血腥的旗帜,WinAPI(32位)会比现在简单得多。 要提供完整的反馈,您可以尝试使用纯32位函数的扩展版本或CreateProcess()函数。 不可否认,我无法向您提供有关标志/参数和其他API参数的任何详细信息。
此外,主要是所有执行功能/程序/方法都返回布尔值,所以你总是可以从[if..then]语句开始作为返回提供者。
Opps,在我写这篇文章的时候,已经有三个答案了。