过程的返回值

时间:2009-07-03 08:14:02

标签: .net c++ winapi process return-value

如何获取流程的返回值?基本上我是** ShellExecute()来自DLL的一个.NET进程(在C ++中)。该过程完成其任务,但现在我想知道它是成功还是失败。如何在WinAPI或MFC中执行此操作?

3 个答案:

答案 0 :(得分:5)

使用CreateProcess()。保持进程句柄并在进程句柄发出信号时调用GetExitCodeProcess()。

答案 1 :(得分:2)

使用ShellExecuteEx代替您,以便获取已启动的流程的句柄。然后,您应该可以使用GetExitCodeProcess来获取退出代码。

(我在这里留下了这个答案,尽管MSalters中有类似的答案,因为我怀疑你是故意使用ShellExecute获取shell行为而不是显式创建进程。)

答案 2 :(得分:0)

ShellExecute()在其本机中是16位调用,所以它不打算提供反馈/回调,尽管你可以搜索线程/进程/内存地址(如果你找到可用的内存空间)及其标志(如果有的话)没有血腥的旗帜,WinAPI(32位)会比现在简单得多。 要提供完整的反馈,您可以尝试使用纯32位函数的扩展版本或CreateProcess()函数。 不可否认,我无法向您提供有关标志/参数和其他API参数的任何详细信息。

此外,主要是所有执行功能/程序/方法都返回布尔值,所以你总是可以从[if..then]语句开始作为返回提供者。

Opps,在我写这篇文章的时候,已经有三个答案了。