Domanda

Ok qui è una semplice applicazione console che ho fatto per testare la RedirectStandardOutput del Process.StartInfo.

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

E sotto è il risultato dell'applicazione.

effetto dell

Quindi, come possiamo vedere i colori mostrano splendidamente sulla console.

Tuttavia, quando ho letto la StandardOutput.BaseStream non c'è informazioni sul colore, nessun codice ANSI, niente di niente.

Come faccio a catturare le informazioni sul colore sul torrente reindirizzato?

È stato utile?

Soluzione

La risposta breve è che i flussi di come sono stati forniti dalla classe .NET Console sono puramente basati su caratteri e restituiscono dati testuali solo.

Per ottenere le informazioni di colore esteso, sarebbe necessario P / Invoke API Win32 ReadConsoleOutput . Ciò restituirà, tra le altre cose, una serie di COLOR_INFO le strutture che contengono gli attributi di colore per ogni personaggio. Si potrebbe desiderare di guardare il ReadConsoleOutput pinvoke.net pagina per ottenere iniziato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top