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

时间:2009-10-07 02:50:59

标签: c# .net wpf wpf-controls console-application

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

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

更新:我尝试使用RichTextBox:

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

唉它只显示了纯文字。

1 个答案:

答案 0 :(得分:13)

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

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

如果你想编写自己的格式化程序,那么

Here are the ANSI/VT100 control codes