**** C newbie alert ****如何编译C应用程序,使其在Windows上不显示控制台窗口的情况下运行?我正在使用Windows XP和GCC 3.4.5(mingw-vista special r3)。我已经详尽地搜索了这一点,并且我已经提出了以下内容,根据我所读到的内容,听起来应该是这样做的,但不在我的系统上:
#include <windows.h>
#include <stdlib.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
system("start notepad.exe");
}
我也尝试将“-mwindows”参数传递给GCC无济于事。代码示例启动记事本,但仍然闪烁命令提示符。
编辑:FWIW我也试过ShellExecute作为system()的alernative,虽然我很乐意甚至得到一个空的main()或WinMain()工作的应用程序。
答案 0 :(得分:16)
保留-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没有。