在c# GUI项目上重定向标准输出+标准错误

Redirect stdout+stderr on a C# GUI project

本文关键字:标准输出 标准 错误 重定向 GUI 项目      更新时间:2023-10-16

我有一个无法更改的非托管dll (c++)。
我怎么能得到STDOUT的结果从这个dll到我的c# GUI项目?例如,DLL中有这样的void:

__declspec(dllexport) void PrintMsg();
void PrintMsg()
{
cout << "Some text" << endl ;
}

我发现这个解决方案在c# Windows服务上重定向stdout+stderr,但所有重定向数据写入文件,我需要接收stdout而不保存到输出文件,最好的选择是在变量中获得输出。

如果可能的话,告诉我怎么做。

谢谢。

我相信你应该能够调用CreateFile()并将它传递给你的应用程序唯一的名称(不是FILENAME)来创建一个"设备"。实际上,你必须做两次,一次用于"写",一次用于"读",然后使用SetStdHandle并将stdout重定向到"写"句柄。然后,您应该能够使用"reading"句柄读取发送到stdout的所有内容。我从来没有尝试过,所以你必须查找如何制作任意通信"设备"。