2009-12-26 52 views
5

好吧,這裏有一個簡單的控制檯應用程序,我測試Process.StartInfoRedirectStandardOutput爲什麼RedirectStandardOutput沒有必要的ANSI代碼?

foreach (c In [Enum].GetValues(GetType(ConsoleColor)) 
    { 
     Console.ForegroundColor = c 
     Console.WriteLine("Test") 
    } 

及以下申請結果。

Result of the Console Application.

所以我們可以看到的顏色漂亮的顯示控制檯上。

但是,當我閱讀StandardOutput.BaseStream時,沒有顏色信息,沒有ANSI代碼,也沒有任何內容。

如何捕獲重定向流中的顏色信息?

+0

我離開這個問題,直到我有人可以給我一個很好的答案。 – 2010-01-31 22:55:19

回答

1

簡而言之,.NET Console類提供給您的流純粹是基於字符的,並且只返回文本數據。

爲了獲得擴展的顏色信息,需要P/Invoke Win32 API ReadConsoleOutput。這將返回包含每個字符的顏色屬性的一系列COLOR_INFO結構體。您可能需要查看ReadConsoleOutput pinvoke.net page才能開始。

+0

不幸的是,這不是我正在尋找的,因爲ReadConsoleOutput作爲一個整體讀取控制檯屏幕,而我想要的是能夠讀取顏色信息,因爲控制檯進程正在將數據寫入標準輸出(顯然是標準錯誤) 。 – 2009-12-27 01:30:57

相關問題