2010-02-07 43 views
4

我有一个非托管的DLL,它将日志消息写入标准输出。我使用WPF应用程序的P调用来调用此DLL,并且需要获取标准输出流日志。我试过Console.SetOut,但似乎只捕捉使用Console.Write书面资料等当p调用到非托管DLL时获取stdout?

人有什么想法?我在其他地方发现了similar questions,但他们没有答案。

+0

你有没有考虑写调用这个DLL的中介机DLL,捕获标准输出,然后通过一切恢复经由p管理/调用? – 2010-02-07 01:14:14

+0

我想这是可能的。虽然这将是非常讨厌,因为我要显示的数据,因为它回来,因此就需要投票,以及额外的包装库。我希望有一个更干净的方式来做到这一点。 – RandomEngy 2010-02-07 03:01:12

回答

2

既然你已经打电话PInvoke的,我想你不会介意SetStdHandle一个额外的电话。类似的线程是在这里Redirect stdout+stderr on a C# Windows service

+0

我确实发现,在我提出这个问题之后,但遗憾的是这对我并不起作用。也许这是从MinGW交叉编译的事实与某种方式混淆了输出流。我会尽力让另一个DLL,看看是否构建方法改变任何东西。 – RandomEngy 2010-02-09 18:53:54

+0

Accepting ...结果我的交叉编译MinGW .dll的行为有所不同。我不得不把它捕捉到它自己的输出,并调用回调我给它通过的PInvoke。 – RandomEngy 2010-03-13 20:17:52