我已将stdout
生成的子进程的CreateProcess
重定向到管道。它工作正常,但据我所知,没有关于颜色变化的信息正在传递。子进程正在使用SetConsoleTextAttribute
来更改文本颜色 - 是否可以通过管道检测到这一点,如果是,可以如何检测?
我最终在RichEdit
控件中显示输出,我想尽可能捕获颜色信息。
这是在C和XP和Vista上的Win32 API。
答案 0 :(得分:0)
您可能需要使用此处的ReadConsoleOutput(和/或相关的):http://msdn.microsoft.com/en-us/library/ms682073(VS.85).aspx。
希望有所帮助。
答案 1 :(得分:0)
可能有一种解决方法......它的旧的和未使用的很多!
转义序列是标准here。 Here是如何在控制台中添加对ANSI.SYS的支持。 here是微软公司关于如何执行此操作的官方KB。
举个例子:
printf("\x1b[33;43Yellow on Blue\x1b[0\n");
现在,在\x1b[
之后解析位,33是黄色前景,43是蓝色背景,然后查找相关颜色并将其设置在RichTextBox中。
注意: \x1b[0
会关闭该属性。
编辑这可能不是最好的解决方案,因为在XP或更高版本下传统NTVDM的16位DOS command.com。但是,我在这里找到了另一个指向“ansicon”的链接,这个链接适用于纯cmd.exe 32位控制台,支持ANSI。
希望这有帮助, 最好的祝福, 汤姆。