GCC / C Как скрыть окно консоли?

* * * * 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 безрезультатно. Пример кода запускает Блокнот, но все же мигает командная строка.

EDIT: FWIW я также пробовал ShellExecute как алернатив к system(), хотя я был бы рад даже получить приложение с пустым main() или WinMain (), работающим на данный момент.

1 ответов


сохраните флаг-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() один.

Edit: краткое объяснение того, почему это работает - использование system() запускает оболочку (например, cmd.exe) для запуска команды, которая создает окно консоли. Использование execl не делает.