为什么RedirectStandardOutput没有必要的ANSI代码?

时间:2009-12-26 18:11:11

标签: redirectstandardoutput ansi-colors

好的,这是一个简单的控制台应用程序,用于测试RedirectStandardOutput的{​​{1}}。

Process.StartInfo

以下是申请结果。

Result of the Console Application.

因此我们可以看到控制台上的颜色很漂亮。

然而,当我读到 foreach (c In [Enum].GetValues(GetType(ConsoleColor)) { Console.ForegroundColor = c Console.WriteLine("Test") } 时,没有颜色信息,没有ANSI代码,没有任何内容。

如何捕获重定向流上的颜色信息?

1 个答案:

答案 0 :(得分:1)

简短的回答是.NET Console类给你的流是纯粹基于字符的,只返回文本数据。

要获取扩展颜色信息,需要P / Invoke Win32 API ReadConsoleOutput。除其他外,这将返回包含每个字符的颜色属性的COLOR_INFO结构数组。您可能需要查看ReadConsoleOutput pinvoke.net page才能开始使用。