GCC / C如何隐藏控制台窗口?

**** C新手提醒****如何编译一个C应用程序,使其运行时不显示Windows上的控制台窗口? 我正在使用Windows XP和GCC 3.4.5(mingw-vista特殊r3)。 我已经详细search了这个,我已经提出了以下内容,根据我所读到的,听起来像是应该做的,但不在我的系统上:

#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系统()的alernative,虽然我会很高兴甚至得到一个空的main()或WinMain()在这一点上工作的应用程序。

Solutions Collecting From Web of "GCC / C如何隐藏控制台窗口?"

保留-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不。