我想调用_popen从可执行文件中获取结果,但它是在消隐.
我查看调试器,发现程序使用Kernel32.WriteConsoleW将unicode字符串写入控制台,而不是使用stdout.
我该如何捕获它?
生成的任何输出都WriteConsole不会写入重定向管道。如果向 提供了管道、文件或除控制台之外的任何其他内容的句柄WriteConsole,它将失败并显示ERROR_INVALID_HANDLE(6)。
来自MSDN 上的高级控制台输入和输出函数:
ReadConsole 和 WriteConsole 只能与控制台句柄一起使用;ReadFile 和 WriteFile 可以与其他句柄(例如文件或管道)一起使用。如果与已重定向且不再是控制台句柄的标准句柄一起使用,ReadConsole 和 WriteConsole 将失败。