Скрыть консоль программы на C в ОС Windows - PullRequest
4 голосов
/ 11 марта 2010

Я хочу скрыть свою консоль C, когда я запускаю свое приложение. Как я могу заставить мое приложение работать в фоновом режиме?

Ответы [ 4 ]

5 голосов
/ 11 марта 2010

Программы с main() по умолчанию компилируются как приложения SUBSYSTEM: CONSOLE и получают окно консоли. Если вы владеете другими процессами, которые запускает ваше приложение, вы можете изменить их для оконных приложений одним из следующих способов:

  • Измените их, чтобы использовать WinMain() вместо main(). Это типичный подход, но требует модификации кода. (Если причиной использования main() является простой доступ к argc / argv, MSVC предоставляет глобальные __argc / __argv эквиваленты для оконных приложений.)
  • Явное указание подсистемы и точки входа с помощью /SUBSYSTEM:WINDOWS /ENTRY:main аргументов link.exe.
  • Используйте editbin.exe, чтобы изменить тип подсистемы после факта. Это может быть полезно, если у вас нет доступа к порожденным процессам из исходного кода.
2 голосов
/ 11 марта 2010

Самый простой способ сделать это - использовать проект Windows Forms, а не консоль, а затем скрыть форму запуска. Другим вариантом, конечно, является служба Windows, но это может быть излишним ...

0 голосов
/ 11 марта 2010

Используйте CreateProcess с флагом DETACH_PROCESS.

0 голосов
/ 11 марта 2010

Если я правильно помню, нет способа сделать это программно. Есть варианты сделать это. Я думаю, что сделал это в прошлом, создав проект Windows, но без кода Windows Forms (я просто включаю файлы из моего консольного приложения). Окно консоли не появилось. Я считаю, что я сделал это в Code :: Blocks один раз, изменив параметр в графическом интерфейсе. Мне жаль, что я не могу быть конкретным, но я использую Visual Studio 2010 RC и способ, которым я это делаю, может отличаться от вашего.

Ваш комментарий заставляет меня думать, что вы порождаете процессы. Вы делаете это с помощью функции, которую вы вызываете. Я не знаю, какой язык вы используете (я предполагаю, что C, потому что вы сказали, что запускаете созданное вами приложение C?), Но есть либо флаг, чтобы сказать скрыть окно, либо (или флаг не устанавливайте его не показывать) или используйте альтернативную функцию, которая делает то же самое, но запускает процесс другим способом. Попробуйте shellexecute и system ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...