【问题标题】:Return value of process进程返回值
【发布时间】:2009-07-03 08:14:01
【问题描述】:

如何获取进程的返回值?基本上我是 **ShellExecute()** 从一个 DLL (在 C++ 中)创建一个 .NET 进程。该进程完成其任务,但现在我想知道它是成功还是失败。如何在 WinAPI 或 MFC 中做到这一点?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      请改用ShellExecuteEx,这样您就可以获得已启动进程的句柄。然后您应该能够使用GetExitCodeProcess 获取退出代码。

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

      【讨论】:

        【解决方案3】:

        ShellExecute() 在其本机中是 16 位调用,因此尽管您可以搜索线程/进程/内存地址(如果您找到可用的内存空间)及其标志(如果有没有血腥旗帜之类的东西,WinAPI(32位)将比现在更简单)。 要提供完整的反馈,您可以尝试使用纯 32 位函数的扩展版本或 CreateProcess() 函数。 不幸的是,我无法为您提供有关标志/Lparameters 和其他 API 参数的任何详细信息。

        此外,主要是所有执行函数/过程/方法都返回布尔值,因此您始终可以从 [if..then] 语句作为返回提供者开始。

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

        【讨论】:

          猜你喜欢
          • 2017-02-02
          • 1970-01-01
          • 1970-01-01
          • 2015-01-17
          • 1970-01-01
          • 1970-01-01
          • 2010-12-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多