Отключить отображение окна консоли
Где можно отключить в Microsoft-Visual-C++ показ окна консоли?
6 ответов
В вашем консольном приложении перейдите
Properties > Linker > System
менять SubSystem
в Windows
и в вашем коде заменить
int _tmain(int argc, _TCHAR* argv[])
с
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
и добавить
#include <windows.h>
Это должно избегать отображения окна консоли в вашем консольном приложении.
Вы можете скрыть это прямо при запуске. Я не знаю, вызовет ли это мерцание:
HWND hWnd = GetConsoleWindow();
ShowWindow( hWnd, SW_HIDE );
В моем случае (vs2022 С++) все, что я сделал, это:
Изменить
интервал основной () {
к
интервал WinMain() {
и
Свойства > Компоновщик > Изменение системыSubSystem
кWindows
Вы можете отключить консоль, манипулируя предварительно скомпилированной подсистемой EXE - таким образом вам не нужно никаких изменений в коде, поскольку вы работаете над конечным продуктом. Отрицательный аспект заключается в том, что вам нужно будет делать это каждый раз, когда вы перекомпилируете проект. Вы можете сделать это через HEX-редактор или воспользоваться бесплатным CFF Explorer.
- Откройте EXE через CFF Explorer
- Перейдите в заголовки Nt> Дополнительный заголовок
- Перейдите по Подсистеме и справа щелкните Консоль Windows и выберите Windows GUI.
- Сохраните файл, консоль больше не будет отображаться
Вы можете выполнить двоичное сравнение и найти точное местоположение в необработанном заголовке PE, а затем, возможно, выполнить некоторую автоматизацию после компиляции в VS
Для пользователей CMake.
add_executable(${exeName} WIN32)
Вам нужно будет использовать
WinMain
вместо
main
для символа точки входа.
Ваш вопрос довольно двусмысленный, поэтому я попытаюсь ответить на вопрос, как я его интерпретировал... Если вам не нужно окно консоли, попробуйте использовать другую подсистему. В частности, вам, вероятно, нужна подсистема Windows или Native, а не консольная подсистема.