有一个服务器类型的 Windows 程序,作为控制台程序制作,但隐藏在后台深处,没有人可以看到或听到它(例如,editbin /subsystem:windows)。
还有第二个控制台程序不想写入文件,而只想写入输出流,无法获取其源代码。我想在第一个程序中得到它的输出。如果她写了一个文件——一切都会很好,让它成为非控制台(相同editbin),它的启动不会以任何方式表现出来。
如果您使用 redirect 运行它prog > file,该窗口仍会打开。如果您尝试通过类似start /min的操作 - 首先窗口cmd.exe打开,然后关闭,背景窗口仍然存在,尽管它不会破坏屏幕,但它会挂在任务栏中。这仍然是可以容忍的,但是整个屏幕上黑色窗口的“闪光”破坏了所有的美学)))我试过_popen了,它更糟。
有没有办法解决这个问题?从一个隐藏的程序中,调用一个带有输出重定向的控制台程序,让它在屏幕上暂时不可见?
调用程序是用 C++ 编写的,但这并不重要吗?
要获得程序的输出,必须重定向其输出流。为了不显示窗口,在结构中创建进程时
STARTUPINFO,传递标志SW_HIDE。好吧,您也可以使用 boost.process,它为所有这些实现了包装器: