我怎么可以做一个隐藏的、一次性的控制台应用程序和通信的?
题
我已经写了一个小控制台应用程序包的第三方DLL有问题。我叫它从GUI应用程序的使用 _popen, ,只要阅读一个值从控制程序的标准输出。在这样做时,不希望控制台窗口是简要显示。
我知道这种可以避免使用某些STARTUPINFO配置与CreateProcess.但是,我宁愿放在修复在控制台应用程序,仍然使用_popen.创造孩子的过程中使用的windows系统(即WinMain而不是主要的)不让控制台窗口走。显然,控制台,分配由操作系统,以便利_popen通信。
注意第三方DLL是不稳定的,但有必要接口,与专有的硬件。因此,任何办法的负荷DLL在GUI应用的存储空间是不可接受的。
解决方案
1)I支持与STARTUPINFO组启动它隐藏窗口的想法。这是Windows SOP,所以它会工作比试图强加的Unix SOP更好。此外,你可能想看到的输出中隔离测试时,它
2),或者你可以做一个GUI应用程序,没有以往任何时候都显示一个窗口。它相当于一个控制台应用程序没有控制台。
修改的
Indeera的链路张贴显示了如何做第二个选项。
修改的
好吧,如果你想要的是将信息发送到家长,最简单的方法是写一个文件。保持这种有序的方法之一是让家长通过一个独特的文件名作为命令行参数,这对孩子写到。父进程可以监视文件和作用于它的内容。
有许多alternativers。最接近到目前为止讨论将被命名管道的两种方法,但你也可以使用各种形式的IPC,包括基于套接字的。
你不能做什么,但是,是访问标准输入/输出/标准错误没有一个控制台。你可以用一个隐藏控制台启动,但它实际上有一个。
修改的
是否LUA允许直接运行可执行文件,而不是通过cmd.exe的?
其他提示
之间进行通信的父母GUI应用程序和隐藏的孩子控制台应用程序的参考以下MSDN文章:
我不认为你可以使用标准输入/输出没有它启动控制台。什么可以做,虽然是写在包装应用的GUI应用程序,不显示任何窗口(只需切换main()中的WinMain()),然后使用某种类型的IPC机制就像一个插座或共享内存。