0

我正在创建一个调用控制台应用程序的新进程。我想更改此子进程控制台窗口的颜色。

原因是我无法重定向控制台的标准输出,因为应用程序操纵了控制台光标。相反,我剥离了控制台框架,剪裁了我想要的信息并将控制台嵌入到我的应用程序中。我只是想改变颜色,让它更适合。

我知道该SetConsoleTextAttribute功能,但我不知道如何获取子进程的标准输出句柄以使用它。

有人有想法么?

4

1 回答 1

2

DuplicateHandle 的文档说:

控制台句柄可以复制,仅在同一进程中使用

(它们不是真正的句柄)所以即使你可以将代码注入孩子,你也不能走这条路。

我假设父应用程序还没有控制台(每个进程只能有一个控制台而不做可怕的黑客攻击),如果是这种情况,你应该能够使用AllocConsole(), GetStdHandle(), SetConsoleTextAttribute(),CreateProcess()最后FreeConsole()(你不需要 FreeConsole如果您当时只运行一个子进程)

另一种选择是使用 cmd.exe:(cmd.exe /T:?? /C childapplication.exe将 ?? 替换为您color /?在 cmd 中运行时找到的颜色值)

于 2012-06-18T15:37:41.867 回答