在C#GUI项目上重定向stdout + stderr

时间:2011-08-04 23:02:03

标签: .net c++ dll

我有一个无法管理的dll(C ++),我无法改变 如何从这个dll到我的C#GUI项目获得STDOUT的结果? 例如DLL有这样的空格:

__declspec(dllexport) void PrintMsg();

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

我找到了这个解决方案Redirect stdout+stderr on a C# Windows service,但是所有重定向数据都写入文件,我需要在没有保存到输出文件的情况下重新读取stdout,最好的选项是在变量中输出。

如果可能,请告诉我如何。

感谢。

1 个答案:

答案 0 :(得分:0)

我相信您应该可以致电CreateFile()并为其申请一个独特的名称(不是文件名)来创建“设备”。实际上你必须做两次,一次用于“写入”,一次用于“阅读”,然后使用SetStdHandle并将stdout重定向到“写入”句柄。然后,您应该能够使用“读取”句柄读取发送到stdout的所有内容。我从来没有试过这个,所以你必须要查找如何制作任意通信“设备”。