我编写了一个小型控制台应用程序来包装有问题的第三方 DLL。我正在使用_popen从 GUI 应用程序调用它,并且只想从控制台程序的标准输出中读取一个值。这样做时,会短暂显示一个不需要的控制台窗口。
我知道这可以通过使用带有 CreateProcess 的某个 STARTUPINFO 配置来避免。但是,我更愿意将修复程序放在控制台应用程序中并仍然使用 _popen。使用 windows 子系统(即 WinMain 而不是 main)创建子进程不会使控制台窗口消失。显然,操作系统分配了一个控制台来方便 _popen 通信。
请注意,第三方 DLL 不稳定,但需要与专有硬件接口。因此,任何在 GUI 应用程序内存空间中加载 DLL 的方法都是不可接受的。