为什么RedirectStandardOutput不具有必要的ANSI代码?
-
21-09-2019 - |
题
确定这里有一个简单的应用控制台我做了测试 RedirectStandardOutput
的 Process.StartInfo
.
foreach (c In [Enum].GetValues(GetType(ConsoleColor))
{
Console.ForegroundColor = c
Console.WriteLine("Test")
}
下面是应用程序的结果。
所以我们可以看到美丽的颜色显示在控制台上。
然而,当我读到的 StandardOutput.BaseStream
没有颜色的信息,没有ANSI码,什么都没有。
我怎么捕捉信息的颜色的重新定向流?
解决方案
简短的回答是,流作为给你的.净 Console
类是纯粹基于字符和返回的唯一文本的数据。
得到扩展色的信息,就必须P/Invoke the Win32API ReadConsoleOutput.这将返回,除其他事项外,一系列的 COLOR_INFO 结构含有色属性的每个字符。你可能会想看看的 ReadConsoleOutput pinvoke.net 页面 开始。
不隶属于 StackOverflow