2009-02-28 72 views
9

**** C newbie alert ****如何編譯C應用程序,以便它在Windows上不顯示控制檯窗口的情況下運行?我使用Windows XP和GCC 3.4.5(mingw-vista特別r3)。我詳盡地用Google搜索這一點,我想出來的,而根據我讀過的東西,聽起來像它應該做的伎倆以下,但不會在我的系統:GCC/C如何隱藏控制檯窗口?

#include <windows.h> 
#include <stdlib.h> 

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    system("start notepad.exe"); 
} 

我我也嘗試向GCC傳遞「-mwindows」參數無濟於事。代碼示例啓動記事本,但仍閃爍了命令提示符。編輯:FWIW我也曾嘗試ShellExecute作爲系統()的縮影,儘管我很樂意甚至用一個空的main()或WinMain()來獲取應用程序。

回答

14

保留-mwindows標誌和使用:

#include <windows.h> 
#include <process.h> 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    execl("c:\\winnt\\system32\\notepad.exe", 0); 
    // or: execlp("notepad.exe", 0); 
} 

注意:您需要爲execl()呼叫,但完整的路徑不是execlp()之一。

編輯:簡要說明爲什麼這會起作用 - 使用system()啓動一個shell(如cmd.exe)來執行生成控制檯窗口的命令。使用execl不會。

+0

完美!謝謝。 – 2009-02-28 10:35:11