11
(我搜索了答案,發現沒有明確的解決方案來解決這個問題。)如何在不顯示Win32 GUI程序的控制檯窗口的情況下執行子控制檯程序?
我正在開發MFC GUI程序。該程序運行各種子程序,包括控制檯程序和shell命令腳本(.cmd)。
最初,它顯示的一個GUI窗口和一個控制檯窗口(帶AllocConsole
創建),因爲有從子進程輸出許多控制檯。但許多用戶抱怨控制檯窗口,所以我們決定隱藏控制檯窗口。
首先試圖象下面這樣:
if (AllocConsole())
{
::ShowWindow(::GetConsoleWindow(), SW_HIDE);
}
好吧,沒有控制檯窗口,但也有在控制檯創建時可見閃爍。 我試過子進程創建幾個CreateProcess
選項,以完全防止控制檯窗口中的表現,但在短暫失敗,我認爲這幾乎是不可能的。
這不是什麼大不了的事。我們可以忽略啓動時的臨時窗口閃爍。
這是真的不可能完全隱藏子控制檯窗口?
閃爍預期;你正在創建一個控制檯窗口,然後隱藏它。問題是,如果你不想讓用戶看到它,爲什麼你會創建一個控制檯窗口? `ShellExecute`或`CreateProcess`有什麼問題? – 2011-01-20 04:58:17
@Code Grey這個程序CreateProcess各種控制檯程序。如果沒有AllocConsole,將會創建分離且無法控制的控制檯窗口,並一直銷燬。 – 9dan 2011-01-20 05:07:30