重定向控制台程序的标准输入/输出是一件小事,但如果程序使用高级控制台功能呢?就像输出彩色文本一样,抛出光标并直接操作控制台缓冲区?是否也可以捕获并重定向到我自己的程序进行处理?
注意:我在谈论我的应用程序(不一定是控制台应用程序)运行控制台应用程序并将其输入/输出重定向到自身的情况。
注2:最后我会想要C#代码,但是现在让我们坚持使用Win32 API和C或C ++。我不认为没有PInvoke就可以了,所以让我们首先得到基本原理(如果可能的话)。
答案 0 :(得分:3)
与Linux不同,所有颜色IO都不会通过简单的重定向捕获,因此捕获它的唯一方法是挂钩WinAPI调用(即您需要拦截系统调用),这需要管理权限,易碎和可疑。