【问题标题】:Why the RedirectStandardOutput does not have the necessary ANSI codes?为什么 RedirectStandardOutput 没有必要的 ANSI 代码?
【发布时间】:2010-12-30 03:42:53
【问题描述】:

好的,这是我为测试Process.StartInfoRedirectStandardOutput 而制作的一个简单的控制台应用程序。

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

以下是申请结果。

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

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

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

【问题讨论】:

  • 我将保留这个问题,直到有人可以为我提供一个好的答案。

标签: redirectstandardoutput ansi-colors


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,这不是我想要的,因为 ReadConsoleOutput 读取控制台屏幕作为一个整体,而我想要的是能够读取颜色信息,因为控制台进程正在将数据写入标准输出(显然还有标准错误)。
猜你喜欢
  • 1970-01-01
  • 2017-08-28
  • 2020-04-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多