通过 C++ 运行命令时隐藏控制台窗口
Posted
技术标签:
【中文标题】通过 C++ 运行命令时隐藏控制台窗口【英文标题】:Hide console window while running a command through c++ 【发布时间】:2013-09-17 05:34:30 【问题描述】:我使用 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
)
提前感谢您的帮助。
【问题讨论】:
也许这就是你要找的。 ***.com/questions/4743559/… 【参考方案1】:你必须重定向你的输出。有一个成员 hStdOutput
和 hStdError
应该被重定向。 Here on MSDN 就是一个例子。
【讨论】:
想不通!能告诉我具体怎么做吗? 请看那个例子。他们在那里准确地显示了您正在寻找的东西。基本上,您必须为hStdOutput
和/或hStdError
指定另一个设备句柄。这可以是将所有内容重定向到文件的文件句柄,也可以是示例中的管道句柄。也可以打开NUL设备CreateFile("nul"...)
丢弃输出。【参考方案2】:
在您的STARTUPINFO
结构中,在dwFlags
成员中设置STARTF_USESHOWWINDOW
标志,并将wShowWindow
设置为SW_HIDE
。
【讨论】:
嗯,它还是来了!有什么想法吗?以上是关于通过 C++ 运行命令时隐藏控制台窗口的主要内容,如果未能解决你的问题,请参考以下文章
c# .NEt 3.5 以用户形式运行进程时无法隐藏 CMD 窗口 - 窗体应用程序