[英]How to execute child console programs without showing the console window from the Win32 GUI program?
(我搜索了SO的答案,發現這個問題沒有明確的解決方案。)
我正在研究MFC GUI程序。 該程序運行各種子程序,包括控制台程序和shell命令腳本(.cmd)。
最初它顯示了一個GUI窗口和一個控制台窗口(使用AllocConsole
創建),因為子進程有許多控制台輸出。 但是很多用戶抱怨控制台窗口所以我們決定隱藏控制台窗口。
首先嘗試如下:
if (AllocConsole())
{
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}
好的,沒有控制台窗口,但在控制台創建時有可見的閃爍。 我已經為子進程創建嘗試了幾個CreateProcess
選項,以防止完全顯示控制台窗口,但總之失敗,我認為這幾乎是不可能的。
這不是什么大不了的事。 我們可以在啟動時忽略臨時窗口閃爍。
但完全隱藏兒童游戲機窗口真的不可能嗎?
為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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.