Pergunta

Ok, aqui está um aplicativo de console simples que fiz para testar o RedirectStandardOutput do Process.StartInfo.

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

E abaixo está o resultado do aplicativo.

Result of the Console Application.

Assim, como podemos ver, as cores aparecem lindamente no console.

No entanto, quando eu li o StandardOutput.BaseStream Não há informações de cores, nenhum código ANSI, nada.

Como faço para capturar as informações de cores no fluxo redirecionado?

Foi útil?

Solução

A resposta curta é que os fluxos conforme dados a você pelo .NET Console A classe é puramente baseada em caracteres e retorna apenas dados textuais.

Para obter as informações de cores estendidas, seria necessário p/invocar a API Win32 ReadConsoleOutput. Isso retornará, entre outras coisas, uma variedade de Color_info estruturas contendo os atributos de cor para cada caractere. Você pode querer olhar para o ReadConsoleOutput Pinvoke.net Página para começar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top