2010-02-07 42 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