windows下隱藏console視窗
阿新 • • 發佈:2019-01-03
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 );