将彩色控制台输出捕获到WPF应用程序

与此问题类似,除了在WPF应用程序中包含的控制台程序产生彩色输出,因此如果我能捕获颜色和文本,那将是很好的。

这是我的第一个WPF程序,我不知道如何去寻找/修改正确的控件,目前我只是使用一个可以工作但只捕获纯文本的TextBox。

更新:我尝试使用RichTextBox:

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

唉它只显示了纯文本。

如果我了解您想要正确执行的操作,则需要屏幕显示在控制台上运行的旧应用程序,并通过您的yourprocess.StandardOutput在WPF应用程序中的控件中获取其控制台输出。

来自控制台的颜色数据(和格式)将是ANSI。 这将以重定向的控制台文本中的控件字符的forms显示,将显示为扩展的ASCII字符和数字。 您将需要ANSI解释器控件将其转换回颜色数据。 我知道存在几个应该能够轻松调整的ANSI终端控件 – 这个代码项目中的一个能够处理ANSI格式,但它是一个完整的ANSI终端,用于处理连接 – 您可能需要更换代码的终端部分,可以显示yourprocess.StandarOutput.ReadToEnd()返回的字符串。

以下是您想要编写自己的格式化程序时需要的ANSI / VT100控制代码 。