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

标签 redirectstandardoutput ansi-colors

好的,这是我用来测试 RedirectStandardOutput 的一个简单的控制台应用程序的Process.StartInfo .

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

以下是申请结果。

Result of the Console Application.

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

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

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

最佳答案

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

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

关于redirectstandardoutput - 为什么 RedirectStandardOutput 没有必要的 ANSI 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1963954/

相关文章:

c# - 是否有任何事件告诉我进程正在等待输入?

c# - StandardOutput.ReadToEnd() 挂起

python - 是否可以使用非 ANSI 颜色从 Python 进行打印?

emacs - 某些终端颜色在 emacs 中不显示

python - 标准库中某处是否有 ANSI 颜色转义码列表?

ruby - 更好的 ruby 终端着色库

C# 关闭标准输出

c# - RedirectStandardOutput 和批处理文件中的暂停命令

c# - 重定向 N 级子进程的标准输出

emacs 24 ansi-term 似乎忽略了主题颜色