Frage

Ok hier ist eine einfache Konsole-Anwendung ich die RedirectStandardOutput des Process.StartInfo zu testen gemacht.

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

Und unten ist die Anwendung Ergebnis.

Ergebnis der Konsolenanwendung.

So wie wir die Farben zeigen, schön auf der Konsole sehen können.

Allerdings, wenn ich die StandardOutput.BaseStream lesen gibt es keine Farbinformationen, keine ANSI-Codes, kein gar nichts.

Wie erfasse ich die Farbinformation auf dem umgeleiteten Strom?

War es hilfreich?

Lösung

Die kurze Antwort ist, dass die Ströme, wie durch die .NET Console Klasse Sie gegeben sind rein zeichenbasierte und nur Textdaten zurück.

Um die erweiterten Farb Informationen zu erhalten, wäre es notwendig, zu P / Invoke den Win32-API ReadConsoleOutput . Dies wird wiederkommen, unter anderem eine Reihe von COLOR_INFO structs die Farbe mit Attributen für jedes Zeichen. Sie könnten auf der ReadConsoleOutput pinvoke.net aussehen wollen bekommen gestartet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top