如何从 .NET 可执行文件中获取输出并传送到 MFC 应用程序?

Posted

技术标签:

【中文标题】如何从 .NET 可执行文件中获取输出并传送到 MFC 应用程序?【英文标题】:How to take output from .NET executable and convey to MFC application? 【发布时间】:2009-08-05 10:14:23 【问题描述】:

我有一个基于对话框的 MFC 应用程序,我必须通过它调用一个 .NET 可执行文件。

我的问题是:

    MFC 应用程序如何知道 .NET 可执行文件已关闭? 如果假设一个 .Net 可执行程序处理一些信息并希望将输出传送到 MFC 应用程序,如何实现。

请帮忙!!

【问题讨论】:

.NET 应用程序的“输出”是什么?这是一个写入标准输出的命令行应用程序吗? 不,它是一个 winform 应用程序。假设它为特定的搜索条件查询数据库并输出结果。 我只是想问一下 exe 是如何传达输出的……是的,它可以是平面文件……但是最好的方法是什么?? 【参考方案1】:

MFC 应用程序可以等待 .NET 进程以正常方式退出 - 使用等待句柄或轮询它。

至于收集输出 - 最简单的机制可能是让 .NET 可执行文件写入文件,然后 MFC 应用程序可以读取它。它很粗糙,但很容易实现!

【讨论】:

【参考方案2】:

1) 您的 MFC 应用程序可以使用 CreateProcess() 来运行 .NET EXE,然后使用 GetExitCodeProcess() 函数来确定它是否已完成。如果尚未完成,此 API 将返回 STILL_ACTIVE(259)。

2) 如果 .NET EXE 输出到命令行,您可以使用标准句柄 StdOut 和 StdErr 读取输出。更多信息here。

或者,通过命令行调用您的 .NET EXE,如下所示:

ShellExecute("%SYSTEMROOT%\System32\Cmd.exe /C \".NET EXE 的路径\" > %TEMP%\CaptureOutput.txt", ...)

然后等待“CaptureOutput.txt”文件并读取其内容。

【讨论】:

我是 MFC 的新手,你能告诉我 CreateProcess 的语法吗?和 GetExitProcess ?? 这里是 CreateProcess 的文档:msdn.microsoft.com/en-us/library/ms682425(VS.85).aspx 你可以谷歌/必应作为例子。

以上是关于如何从 .NET 可执行文件中获取输出并传送到 MFC 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 .NET 进程获取对象的句柄?

Matlab可执行文件,传递变量[重复]

html怎么获取动态数据?

在 vb.net 中获取可执行文件的路径?

如何从我的 kivy 应用程序(Pyinstaller)获取 Windows 可执行文件?

simulink matlab独立可执行文件无法获得输出