通过C++运行命令时隐藏控制台窗口

4
我使用了CreateProcess来运行一个命令,并使用了CREATE_NO_WINDOW标志,但是控制台会在短暂的时间内弹出,如何避免这种情况?
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );

CreateProcess
( 
NULL,                // No module name (use command line)
command,             //set env variable and use it is my command
NULL,                // Process handle not inheritable
NULL,                // Thread handle not inheritable
FALSE,               // Set handle inheritance to FALSE
CREATE_NO_WINDOW,    //don't create window but it appears for fraction of second!
NULL,                // Use parent's environment block
NULL,                // Use parent's starting directory
&si,                 // Pointer to STARTUPINFO structure
&pi                  // Pointer to PROCESS_INFORMATION structure
)  

预先感谢您的帮助。

也许这就是你正在寻找的内容。 https://dev59.com/Jm445IYBdhLWcg3wq8Pp - Ivan Ishchenko
2个回答

0
在您的STARTUPINFO结构中,将dwFlags成员中的STARTF_USESHOWWINDOW标志设置为wShowWindow设置为SW_HIDE

它仍然出现了!有任何想法吗? - Destructor

0

你需要重定向输出。有两个成员hStdOutputhStdError需要被重定向。这里是MSDN的例子


我无法弄清楚它!你能告诉我具体该怎么做吗? - Destructor
请看这个例子,它们准确地展示了你所寻找的内容。基本上,你需要为 hStdOutput 和/或 hStdError 指定另一个设备句柄。这可以是一个文件句柄,将所有内容重定向到文件中,或者像例子中一样使用管道句柄。你也可以打开 NUL 设备 CreateFile("nul"...) 来丢弃输出。 - bkausbk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接