Pregunta

La autorización aquí es un simple aplicación de consola que hice para probar la RedirectStandardOutput del Process.StartInfo.

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

Y a continuación es el resultado de la aplicación.

Resultado de la aplicación de consola.

Así como podemos ver los colores muestran muy bien en la consola.

Sin embargo, cuando leí el StandardOutput.BaseStream no hay información sobre el color, no hay códigos ANSI, nada de nada.

¿Cómo capturo la información de color en el flujo redirigido?

¿Fue útil?

Solución

La respuesta corta es que las corrientes como que le ha asignado la clase de .NET Console son puramente basado en el carácter y devolver sólo datos de texto.

Para obtener la información de colores ampliada, sería necesario P / Invocar la API de Win32 ReadConsoleOutput . Esto devolverá, entre otras cosas, una serie de COLOR_INFO estructuras que contienen los atributos de color para cada personaje. Es posible que desee ver en la ReadConsoleOutput pinvoke.net página para obtener comenzado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top