【发布时间】:2011-11-16 22:59:46
【问题描述】:
我有一个程序的 DLL,并且希望能够在命令行中运行该程序,然后将我的 DLL 的输出通过管道传输到另一个程序。我该怎么做?
我目前可以打开一个新的调试控制台进行打印,但我希望能够通过管道输出,以便我可以运行如下快捷方式:
C:\Windows\System32\cmd.exe /K "C:\Program_Using_the_DLL.exe | C:\Program_to_Pipe_To.exe"
这与一些类似的问题(IE:this one)不同,因为我需要能够通过管道输出,所以我需要它来到当前控制台。
也许我可以以某种方式使用 GetStdHandle(),或者是否可以使用 AttachConsole(ATTACH_PARENT_PROCESS)?任何帮助,将不胜感激!我是这个细节部分的新手。
(DLL 是用 C++ 编写的)
【问题讨论】:
-
当您将一个程序的输出通过管道传输到另一个程序时,它不再进入控制台,因此 AttachConsole 无济于事。您需要获取父程序用于输出的文件句柄,并希望它与 C++ I/O 兼容。
-
我看不出它为什么不能工作。你尝试过做什么?