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

Asked
Viewd10602

11

**** C新手警报****如何编译C应用程序,使其在Windows上不显示控制台窗口的情况下运行?我正在使用Windows XP和GCC 3.4.5(mingw-vista特殊r3)。我已经在Google上进行了详尽的搜索,并提出了以下内容,根据我所读的内容,听起来应该可以解决问题,但在我的系统上不起作用:

 #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()的替代方法,尽管我很乐意获得一个具有空main()或WinMain()的应用程序。

1 个答案

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()启动外壳程序(如cmd.exe)以执行生成控制台窗口的命令。不使用execl。

  • 如果使用execlp(),则不需要完整路径。

    paxdiabloFebruary 28, 2009 11:53
  • 嗯,也感谢您的编辑-我认为是这样的。(+2按钮在哪里?;-)

    Wayne KoortsFebruary 28, 2009 10:44
  • Pax:谢谢,这甚至更接近了我所需要的:)

    Wayne KoortsFebruary 28, 2009 19:23