2010-01-01 3 views
3

Je suis en train d'encapsuler un processus de ligne de commande dans une application WinForms et de rediriger la sortie afin qu'elle puisse être redirigée vers un contrôle RTF ou une listbox. Ce serait bien de pouvoir conserver la couleur de premier plan du texte au fur et à mesure de son affichage afin qu'il puisse être affiché correctement dans le formulaire. Y a-t-il un moyen de faire cela?Préservation de la couleur lors de la redirection de la sortie stdout et stderror en C#

Répondre

2

Très probablement pas. La sortie de la console colorée est effectuée à l'aide de l'appel API SetConsoleTextAttribute, qui fonctionne sur les tampons de l'écran de la console.

Si vous redirigez la sortie d'une application de console, vous n'avez aucun tampon d'écran de console à utiliser. SetConsoleTextAttribute renvoie zéro (indiquant un échec) si vous redirigez la sortie, ce qui signifie que l'application n'a même pas pu définir les couleurs.

+0

Existe-t-il une alternative à la redirection de la sortie? Qu'en est-il une fenêtre de console cachée et raclant la sortie? – Charles

+1

Vous pourriez trouver une solution dans le code source de Console2 (http://sourceforge.net/projects/console/) une "amélioration de la fenêtre de console Windows" qui parvient à implémenter des fenêtres de console avec des couleurs, des tabulations, ... – Sofahamster

+0

Je vais Vérifiez cela. Merci. – Charles

Questions connexes