如何从 .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 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章