为什么 RedirectStandardOutput 没有必要的 ANSI 代码?
好的,这是我制作的一个简单的控制台应用程序,用于测试 Process.StartInfo
的 RedirectStandardOutput
。
foreach (c In [Enum].GetValues(GetType(ConsoleColor))
{
Console.ForegroundColor = c
Console.WriteLine("Test")
}
下面是应用结果。
因此我们可以看到颜色在控制台。
但是,当我读取 StandardOutput.BaseStream
时,没有颜色信息,没有 ANSI 代码,什么也没有。
如何捕获重定向流上的颜色信息?
Ok here's a simple Console Application I made to test the RedirectStandardOutput
of the Process.StartInfo
.
foreach (c In [Enum].GetValues(GetType(ConsoleColor))
{
Console.ForegroundColor = c
Console.WriteLine("Test")
}
And below is the application result.
So as we can see the colors show beautifully on the console.
However, when I read the StandardOutput.BaseStream
there's no color information, no ANSI codes, no nothing.
How do I capture the color information on the redirected stream?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
简而言之,.NET
Console
类提供给您的流是纯粹基于字符的,并且仅返回文本数据。要获取扩展颜色信息,需要 P/Invoke Win32 API 阅读控制台输出。除其他外,这将返回 COLOR_INFO< 的数组/a> 包含每个字符的颜色属性的结构。您可能需要查看 ReadConsoleOutput pinvoke.net 页面 以获取开始了。
The short answer is that the streams as given to you by the .NET
Console
class are purely character-based and return only textual data.To get the extended color info, it would be necessary to P/Invoke the Win32 API ReadConsoleOutput. This will return, among other things, an array of COLOR_INFO structs containing the color attributes for each character. You might want to look at the ReadConsoleOutput pinvoke.net page to get started.