与this question类似,除了在WPF应用程序中包含的控制台程序产生彩色输出,因此如果我能捕获颜色和文本,那将是很好的。
这是我的第一个WPF程序,我不知道如何去寻找/修改正确的控件,目前我只是使用一个可以工作但只捕获纯文本的TextBox。
更新:我尝试使用RichTextBox:
richTextBox.Document.Blocks.Clear();
richTextBox.Document.Blocks.Add(new Paragraph(new Run(process.StandardOutput.ReadToEnd())));
唉它只显示了纯文字。
答案 0 :(得分:13)
如果我了解您想要正确执行的操作,您希望屏幕抓取在控制台上运行的旧版应用,并通过yourprocess.StandardOutput
在WPF应用中的控件中获取其控制台输出。
来自控制台的颜色数据(和格式)将是ANSI。这将以重定向的控制台文本中的控件字符的形式显示,将显示为扩展的ASCII字符和数字。您需要一个ANSI解释器控件才能将其转换回颜色数据。我知道存在几个应该能够轻松调整的ANSI终端控件 - 代码项目上的this one能够处理ANSI格式,但它是一个完整的ANSI终端,用于处理连接 - 您可能需要用可以显示yourprocess.StandarOutput.ReadToEnd()
返回的字符串的东西替换代码的终端部分。