【发布时间】:2010-11-20 17:11:50
【问题描述】:
我编写了一个小型控制台应用程序来包装有问题的第三方 DLL。我使用_popen 从GUI 应用程序调用它,并且只想从控制台程序的标准输出中读取一个值。这样做时,会短暂显示一个不需要的控制台窗口。
我知道这可以通过使用带有 CreateProcess 的特定 STARTUPINFO 配置来避免。但是,我更愿意将修复程序放在控制台应用程序中并仍然使用 _popen。使用 windows 子系统(即 WinMain 而不是 main)创建子进程不会使控制台窗口消失。显然,操作系统分配了一个控制台来方便_popen通信。
请注意,第三方 DLL 不稳定,但需要与专有硬件接口。因此,任何将DLL加载到GUI应用程序内存空间的方法都是不可接受的。
【问题讨论】:
-
这是可能的,因为我已经在previous question 中回答了这个问题
-
我很清楚如何制作非控制台应用程序。我的问题是是否可以在不分配控制台窗口的情况下从父进程读取非控制台应用程序的标准输出。
-
在这种情况下,您应该编辑问题和标题
-
Indeera,我同意。随意进行编辑。
标签: winapi console pipe stdout popen