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 не делает.