2010-08-18 2 views
1

Например, на C# вы можете запустить программу без появления черного экрана ... поэтому я подумал: поскольку все, что вы можете сделать с .NET, также можете делать с Win32, возможно, есть решение.Как я могу запустить программу незаметно? (без появления окна консоли)

Любые идеи?

ответ

2

Консольное окно появляется, когда программа связана с /SUBSYSTEM:CONSOLE, которая является по умолчанию, если вы еще не просили ничего.

Если вы хотите, чтобы это было «приложение для Windows», то есть «сделать вкладки GUI», в том числе невидимым, ссылку на /SUBSYSTEM:WINDOWS. Однако вам понадобится функция WinMain, а не обычная функция main.

+0

Как это сделать? Я вошел: #pragma комментарий (линкер, "/ Subsystem: WINDOWS") , и заменить "ИНТ основной()" с: INT APIENTRY WinMain (HINSTANCE HINSTANCE, HINSTANCE hPrevInstance, LPSTR lpCmdLine, междунар nCmdShow) , но он все еще не работает ... – Claudiu

+1

Два способа, как предлагает @Alex Farber, вы можете сделать это через редактор свойств Visual Studio - вы смотрите в настройках компоновщика для проекта на C++. Другое дело, если вы строите вручную, когда вы вводите «LINK /out:exename.exe obj1.obj obj2.obj» append/SUBSYSTEM: WINDOWS в эту строку. – 2010-08-18 12:16:09

+0

Для этого вам не нужно менять основную функцию на WinMain. По крайней мере, не нужно. –

1

Открыть проект - Свойства и установить опцию компоновщика/SUBSYSTEM для WINDOWS.

0

У меня есть файл заголовка "MainEntryPoint.h", который содержит следующий текст:

#pragma once 
#if defined _MSC_VER 
    #if !defined _WINDLL 
    #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup") 
    #endif 
#endif 

Я #include этот файл в файл main.cpp любого проекта, который

  • должен быть windows, а не консольным приложением
  • Как я занимаюсь кросс-платформенной работой, я предпочитаю использовать стандартную (main()) точку входа C/C++ для всех моих проектов.

(Защитный макрос автоматически гарантирует, что он применим только к сборкам DevStudio и исключает беспорядок с точкой входа при построении dll).

Смежные вопросы