【发布时间】:2018-11-16 05:01:18
【问题描述】:
我使用 Visual C++ 开发了一个 UI,应用程序类型是基于 diolog 的。
为了从我的 UI 执行另一个应用程序 (CLI),我使用了 ShellExecute() 函数。 此应用程序完成其工作并随着代码在我的 UI 中运行而消失。
从UI方面,如何知道应用程序是否成功完成了它的工作?
谁能帮忙实现我的可视化 C++ 代码和从该代码打开的另一个外部应用程序之间的通信。
这是我用于执行应用程序的代码 sn-p,
CString cmd = "/C command parameters";
HINSTANCE hinst = ShellExecute(0, "open", "bin\\My application.exe", cmd, 0, SW_SHOW);
在我的application.exe中,如果操作成功,最后一行会打印“成功”,有什么方法可以从UI端读取行。
【问题讨论】:
-
查找该应用的返回码以确定它是否已成功完成工作。
-
如果您想等待进程完成,请使用
CreateProcess+WaitForSingleObjectstackoverflow.com/a/42544/4603670,或者使用ShellExecuteEx... -
使用
CreateProcess,您也可以将redirect the output ofMy application.exe连接到您自己的应用程序的管道中,这样您就可以读取输出。 -
您的意思可能是
"/C command parameters";而不是"\C command parameters";,请确认和/或更正。你可以edit你的问题。 -
cmd.GetBuffer(0)只是一个解决方案,前提是您了解 CString::GetBuffer 的作用以及它对您的要求。如果不这样做,您只是创建了一个新错误。
标签: c++ visual-c++ mfc createprocess shellexecute