¿Por qué la RedirectStandardOutput no tiene los códigos ANSI necesarias?
-
21-09-2019 - |
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.
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?
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.