2009-10-07 12 views
8

Similar a this question, excepto que el programa de la consola envuelto en la aplicación WPF genera una salida de color, por lo que sería bueno si pudiera capturar el color y el texto.Capture la salida de consola de color en la aplicación WPF

Este es mi primer programa WPF y no estoy seguro de cómo encontrar/modificar el control correcto, actualmente solo estoy usando un TextBox que funciona pero solo captura texto sin formato.

Actualización: Me trató de usar RichTextBox:

richTextBox.Document.Blocks.Clear(); 
richTextBox.Document.Blocks.Add(new Paragraph(new Run(process.StandardOutput.ReadToEnd()))); 

Por desgracia sólo mostró texto plano.

+0

¿Pudiste hacerlo funcionar? Actualmente estoy tratando de hacer algo similar y probé la respuesta que se detalla a continuación, pero no pude ver ninguno de los códigos de control en los datos que salen de la transmisión. –

+0

Hola Adam, no, el programa de consola fue eliminado por otro desarrollador y ya no lo mantengo. – si618

+0

¿Ha intentado buscar en RichTextBox en lugar de TextBox? – viggity

Respuesta

13

Si entiendo lo que quiere hacer correctamente, desea eliminar una aplicación heredada que se ejecuta en la consola y obtener su salida de consola en un control en su aplicación WPF a través del yourprocess.StandardOutput.

Los datos de color (y el formato) que saldrán de la consola serán ANSI. Esto aparecerá en forma de caracteres de control en el texto de la consola redirigida que se mostrará como caracteres y números ASCII extendidos. Necesitará un control de intérprete ANSI para traducir eso nuevamente en datos de color. Sé que existen varios controles de terminal ANSI que se deben poder adaptar fácilmente: this one en Code Project es capaz de manejar el formato ANSI, pero es un terminal ANSI completo diseñado para manejar una conexión; es posible que deba reemplazar el terminal parte del código con algo que puede mostrar la cadena devuelta por yourprocess.StandarOutput.ReadToEnd().

Here are the ANSI/VT100 control codes que necesitará si quiere escribir su propio formateador.

+0

+1 Gracias por eso, lo investigaremos. FWIW, en realidad no es una aplicación heredada, sino que la consola es un contenedor alrededor de una biblioteca de clase que realiza instalaciones y actualizaciones de base de datos. Es solo una manera fácil de analizar algunas variables difíciles. Usamos la consola como parte de una acción personalizada Wix DTF para las instalaciones, y el proyecto WPF es para que nuestros desarrolladores también puedan usar la aplicación de la consola. – si618

Cuestiones relacionadas