1. 程式人生 > >windows下隱藏console視窗

windows下隱藏console視窗

1 問題

想寫一個程式,呼叫另外一個命令,雙擊執行時直接後臺執行,執行時不彈出console黑視窗。

2 解決方案

最開始使用system( "your_cmd" );這樣的方式,必然會有console視窗一閃而過。

後來查資料看到有人提出了新增連結器選項
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
使得子系統和函式入口不匹配,就不會彈出黑色console視窗。

但是我的程式碼中預設呼叫了一個system函式,這句話實際是用cmd.exe執行一個命令列,
所以它還是會彈出黑窗。

接下來就需要用winapi來解決了,一般常規用法是CreateProcess

,但是我發現了一個
Deprecated的api更好用,WinExec,原型是

#include <windows.h>
UINT WINAPI WinExec(
  _In_ LPCSTR lpCmdLine,
  _In_ UINT   uCmdShow
);

Note This function is provided only for compatibility with 16-bit Windows. Applications should use the CreateProcess function.
竟然可以從16位相容到現在,可以知道微軟的相容多麼猛了。

所以只需要將system( "your_cmd" );
替換成WinExec( "cmd.exe /c your_cmd", SW_HIDE );