Ok here's a simple Console Application I made to test the RedirectStandardOutput
of the Process.StartInfo
.
foreach (c In [Enum].GetValues(GetType(ConsoleColor))
{
Console.ForegroundColor = c
Console.WriteLine("Test")
}
And below is the application result.
So as we can see the colors show beautifully on the console.
However, when I read the StandardOutput.BaseStream
there's no color information, no ANSI codes, no nothing.
How do I capture the color information on the redirected stream?
The short answer is that the streams as given to you by the .NET Console
class are purely character-based and return only textual data.
To get the extended color info, it would be necessary to P/Invoke the Win32 API ReadConsoleOutput. This will return, among other things, an array of COLOR_INFO structs containing the color attributes for each character. You might want to look at the ReadConsoleOutput pinvoke.net page to get started.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With