(我搜索了SO的答案,发现没有明确的解决方案。)
我正在研究MFC GUI程序。该程序运行各种子程序,包括控制台程序和shell命令脚本(.cmd)。
最初它显示了一个GUI窗口和一个控制台窗口(使用AllocConsole
创建),因为子进程有许多控制台输出。但许多用户抱怨控制台窗口,所以我们决定隐藏控制台窗口。
首先尝试如下:
if (AllocConsole())
{
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}
好的,没有控制台窗口,但在控制台创建时有可见的闪烁。
我已经为子进程创建尝试了几个CreateProcess
选项,以防止完全显示控制台窗口,但总之失败,我认为这几乎是不可能的。
这不是什么大问题。我们可以在启动时忽略临时窗口闪烁。
但完全隐藏儿童游戏机窗口真的不可能吗?
答案 0 :(得分:15)
为CreateProcess调用设置STARTUPINFO:
STARTUPINFO si = { 0 };
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
si.wShowWindow = SW_HIDE;