5

好的,这是我为测试RedirectStandardOutput.Process.StartInfo

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

以下是申请结果。

控制台应用程序的结果。

所以我们可以看到控制台上的颜色显示得很漂亮。

但是,当我阅读StandardOutput.BaseStream没有颜色信息,没有 ANSI 代码,什么都没有时。

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

4

1 回答 1

1

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

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

于 2009-12-26T18:42:19.600 回答