Как скрыть консольное приложение c

Обновлено: 04.07.2024

Здравствуйте, Win32nipuh, Вы писали:

W>как сделать консольное приложение без окна?чтобы не появлялось консольное окно и никакое окно вообще?

консольное приложение без консоли — это нонсенс. На самом деле тебе нужно оконное приложение без окна.

Здравствуйте, Win32nipuh, Вы писали:

W>как сделать консольное приложение без окна?чтобы не появлялось консольное окно и никакое окно вообще?

Ставишь в свойствах проекта, вместо Console Application — Windows Application.

как сделать консольное приложение без окна?чтобы не появлялось консольное окно и никакое окно вообще?

Здравствуйте, Win32nipuh, Вы писали:

W>как сделать консольное приложение без окна?чтобы не появлялось консольное окно и никакое окно вообще?

При создании проекта выбираешь Windows Application, находишь main и комментируешь строки, которые создают окно

Здравствуйте, Lloyd, Вы писали:

L>консольное приложение без консоли — это нонсенс.

Вопрос только зачем?

L>На самом деле тебе нужно оконное приложение без окна.


Есть логика намерений и логика обстоятельств, последняя всегда сильнее.


Сервисом не стоит в моем случае.
Как пример: бывает надо, чтобы приложение один отработало, будучи вызванным из другого, вернуло код вызвавшему.
Скажем, сетап какой-нибудь.

Я использовал совет — заменил тип приложения на Windows — все прошло.

Но интересно: как скрыть в консольном приложении окно?

W>Сервисом не стоит в моем случае.
W>Как пример: бывает надо, чтобы приложение один отработало, будучи вызванным из другого, вернуло код вызвавшему.
W>Скажем, сетап какой-нибудь.

W>Более-менее объяснимо?

W>Я использовал совет — заменил тип приложения на Windows — все прошло.

W>Но интересно: как скрыть в консольном приложении окно?

Тебе не нужно консольное приложение.
Нужно обычное приложение, но без создания главного окна в точке входа в программу.

Я хочу быть честным и сказать вам, что это для программы кейлоггер, НО я не собираюсь взломать кого-то. Это для маленького школьного проекта, который я хочу сделать, чтобы показать опасности хакеров. (Я думал, что было бы очень круто показать что-то подобное в школе.)

Я надеюсь, что вы поможете мне с этим.

Так. Вот код, который я написал, посмотрев его в Google. (Не обращайте внимания на все заметки о намерениях.)

Как видите, я включил Windows.h и написал FreeConsole (); в основном.

Да, я вижу появившееся окно и сразу исчезаю. Но, похоже, сразу после этого открывается новая консоль, которая просто пуста. (С пустым, я имею в виду: «Нажмите любую клавишу, чтобы продолжить ..» Я думаю о том, имеет ли это какое-либо отношение к «system (« PAUSE »)»)

Поэтому я хочу знать, почему он открывает новую консоль, а не просто создает и скрывает первую.

Решение

Чтобы буквально скрыть / показать окно консоли по требованию, вы можете использовать следующие функции:
Можно скрыть / показать консоль, используя Витрина . GetConsoleWindow извлекает дескриптор окна, используемый консолью
IsWindowVisible может использоваться для проверки, является ли окно (в этом случае консоль) видимым или нет.

Другие решения

Поэтому я хочу знать, почему он открывает новую консоль, а не просто создает и скрывает первую.

Консольное приложение фактически не создает консоль, оно просто запускается в одной. Если вы запускаете исполняемый файл из Проводника, Windows создает консоль для его запуска. Когда вы вызываете FreeConsole , она не закрывает новую консоль, просто отсоединяет ваш процесс от нее.

Как отмечалось в комментариях к WhozCraig, создайте обычное приложение для Windows и не создавайте окна.

На мой взгляд, такой подход лучше, чем использование WinMain потому что он работает надежно, и вы не делаете свою платформу C ++ Code зависимой.

Это просто. FreeConsole () API сделает эту магию для вас

Просто сделайте это при запуске

Это вернет дескриптор окна (HWND) ShowWindow() который, в свою очередь, будет скрывать это. Это решение только для систем Windows.

Это правильный ответ на вопрос, даже если он не помечен как он.

редактировать: возможное решение / взлом может быть установить (в Visual Studio) Linker-> System-> SubSystem на «Windows (/ SUBSYSTEM: WINDOWS)» вместо «Консоль (/ SUBSYSTEM: CONSOLE)». Это, вероятно, не оптимально, однако.

Я поискал в Google информацию о том, как скрыть собственное окно консоли. Удивительно, но единственными решениями, которые я смог найти, были хакерские решения, в которых FindWindow() находил окно консоли по его заголовку . Я немного углубился в Windows API и обнаружил, что есть гораздо лучший и простой способ, поэтому я хотел опубликовать его здесь, чтобы другие могли найти.

Просто перейдите в Свойства приложения и измените Тип вывода с Консольное приложение на Приложение Windows .

Зачем вам консольное приложение, если вы хотите скрыть саму консоль? знак равно

Я рекомендую установить для типа вывода проекта значение Приложение Windows вместо Консольного приложения. Он не покажет вам консольное окно, но выполнит все действия, как это делает консольное приложение.

Вы можете сделать обратное и установить тип вывода приложения: Приложение Windows. Затем добавьте этот код в начало приложения.

Этот код отобразит консоль, если showConsole равно true

Смотрите мой пост здесь:

Вы можете создать приложение Windows (с окном или без него) и отображать консоль по своему усмотрению. При использовании этого метода окно консоли никогда не появляется, если вы не показываете его явно. Я использую его для двухрежимных приложений, которые я хочу запускать в консольном или графическом режиме, в зависимости от того, как они открываются.

«Просто чтобы спрятаться» вы можете:

Измените тип вывода с Консольное приложение на Приложение Windows ,

И вместо Console.Readline/key вы можете использовать new ManualResetEvent(false).WaitOne() в конце, чтобы приложение продолжало работать.

Если вы не хотите зависеть от заголовка окна, используйте это:

Если у вас нет проблем с интеграцией небольшого пакетного приложения, существует программа под названием Cmdow.exe , что позволит вам скрыть окна консоли на основе заголовка консоли.

Добавьте exe в решение, установите для действия сборки значение «Content», установите для параметра «Копировать в выходной каталог» то, что вам подходит, и cmdow скроет окно консоли при запуске.

Я искал информацию о том, как скрыть собственное окно консоли. Удивительно, но единственными решениями, которые я смог найти, были хакерские решения, в которых FindWindow() находилось окно консоли по его названию. Я углубился в Windows API и обнаружил, что есть намного лучший и простой способ, поэтому я хотел бы опубликовать его здесь, чтобы другие могли найти.

ОТВЕТЫ

Ответ 1

Ответ 2

Просто зайдите в приложение "Свойства" и измените тип вывода из Консольного приложения на Приложение Windows.

Ответ 3

Зачем вам консольное приложение, если вы хотите скрыть консоль? =)

Я рекомендую установить для Project Output типа Приложение Windows вместо приложения Консоль. Он не покажет вам консольное окно, но выполните все действия, например, приложение консоли.

Ответ 4

Вы можете сделать обратное и установить тип вывода приложения: Windows Application. Затем добавьте этот код в начало приложения.

Этот код покажет Консоль, если showConsole есть true

Ответ 5

Смотрите мой пост здесь:

Вы можете создать приложение Windows (с окном или без него) и показать консоль по желанию. Используя этот метод, окно консоли никогда не появляется, если вы явно не показываете его. Я использую его для двухрежимных приложений, которые я хочу запускать в режиме консоли или gui в зависимости от того, как они открываются.

Ответ 6

Если вы не хотите, чтобы это зависит от названия окна, используйте это:

Ответ 7

Если у вас нет проблемы с интегрированием небольшого пакетного приложения, есть эта программа под названием Cmdow.exe, которая позволит вам скрыть консольные окна на основе на заголовке консоли.

Добавьте exe в решение, установите действие сборки в "Содержимое", установите "Копировать в выходной каталог" на то, что вам подходит, и cmdow скроет окно консоли при его запуске.

Чтобы снова увидеть консоль, просто измените Аргументы

Ответ 8

"Чтобы скрыть", вы можете использовать:

Измените тип вывода из Консольного приложения в приложение Windows,

Читайте также: