如同这个问题,除了 WPF 应用程序中包含的控制台程序会生成彩色输出,因此如果我能够捕获颜色和文本,那就太好了。
这是我的第一个 WPF 程序,我不知道如何查找/修改正确的控件,目前我只是使用一个 TextBox,它可以工作,但只能捕获纯文本。
更新:我尝试使用 RichTextBox:
richTextBox.Document.Blocks.Clear();
richTextBox.Document.Blocks.Add(new Paragraph(new Run(process.StandardOutput.ReadToEnd())));
可惜它只显示纯文本。
如果我理解您想要正确执行的操作,您希望屏幕抓取在控制台上运行的旧版应用程序,并通过以下方式在 WPF 应用程序中的控件中获取其控制台输出:yourprocess.StandardOutput
.
来自控制台的颜色数据(和格式)将为 ANSI。这将以控制字符的形式显示在重定向的控制台文本中,该文本将显示为扩展 ASCII 字符和数字。您将需要一个 ANSI 解释器控件将其转换回颜色数据。我知道存在几种应该能够轻松适应的 ANSI 终端控件 -this one代码项目上的能够处理 ANSI 格式,但它是一个完整的 ANSI 终端,旨在处理连接 - 您可能需要将代码的终端部分替换为可以显示返回的字符串的内容yourprocess.StandarOutput.ReadToEnd()
.
以下是 ANSI/VT100 控制代码如果您想编写自己的格式化程序,您将需要它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)