Question

Ok, voici une simple application de la console que j'ai fait pour tester la RedirectStandardOutput du Process.StartInfo.

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

Et ci-dessous est le résultat de l'application.

Résultat de l

Alors que nous pouvons voir les couleurs montrent magnifiquement sur la console.

Cependant, quand je lis le StandardOutput.BaseStream il n'y a pas d'informations de couleur, pas de code ANSI, sans rien.

Comment capturer les informations de couleur sur le flux redirigé?

Était-ce utile?

La solution

La réponse courte est que les cours d'eau comme vous est donné par la classe Console .NET sont purement à base de caractères et ne renvoient que des données textuelles.

Pour obtenir les informations de couleurs étendue, il serait nécessaire de P / Invoke l'API Win32 ReadConsoleOutput . Ceci renvoie, entre autres, un tableau de COLOR_INFO struct contenant les attributs de couleur pour chaque caractère. Vous pouvez regarder le ReadConsoleOutput pinvoke.net pour obtenir commencé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top