程式碼
ShowWindow(FindWindow("ConsoleWindowClass", argv[0]), 0);
參數說明
| 參數 | 意義 |
ConsoleWindowClass | 主控台視窗的視窗類別名稱(Window Class Name),系統固定值。 |
argv[0] | 程式啟動參數陣列第一個元素,通常為執行檔完整路徑,作為視窗標題比對依據。 |
0 (SW_HIDE) | 隱藏視窗。對應 SW_SHOW (5) 顯示,SW_MINIMIZE (6) 最小化等。 |
常用 ShowWindow 命令
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
注意事項
FindWindow 若找不到視窗回傳 NULL,需檢查回傳值再呼叫 ShowWindow。
- 主控台標題可能被程式修改(
SetConsoleTitle),導致 argv[0] 比對失效,建議改用 GetConsoleWindow() 直接取得 HWND(Win32 API,需 #include <windows.h>)。
- 隱藏主控台後程式仍在背景執行,若需完全無視窗,專案屬性 → Linker → System → SubSystem 設為
Windows (/SUBSYSTEM:WINDOWS)。
最佳實務
HWND hWnd = GetConsoleWindow(); // 直接取得主控台 HWND
if (hWnd) ShowWindow(hWnd, SW_HIDE);