Я разрабатываю простое консольное приложение на C++ без классов & объектов.
Есть ли какой-либо метод или функция, чтобы предотвратить закрытие консоли при нажатии кнопки красного X?
Я использую Visual Studio C++ Express 2010: простое консольное приложение, которое содержит только файл main.cpp. Спасибо, что ответили на мой вопрос :) !!C++ Предотвратите закрытие окна консоли при нажатии на красный X
ответ
Жаль, что это не комментарий, у меня пока нет комментариев.
Не можете ли вы просто удалить кнопку в свойствах для формы?
Возможно закрытие закрытого сообщения для окна и предотвращение его закрытия, если вы получаете сообщения для окна. К сожалению, консоль не зависит от выполняемой в ней программы, и у вас нет такого контроля.
Вы можете использовать SetConsoleCtrlHandler для управления консольным окном. Вам необходимо написать обратный вызов для обработки событий (например, CTRL_CLOSE_EVENT
). Вы также можете использовать функцию GetConsoleWindow для получения окна-дескриптора и обрабатывать сообщения окна. Я выполнил управление окном с помощью прежнего метода и не уверен в обработке конкретного окна сообщения (через оконный дескриптор).
Refer Console Functions.
Это работает для меня:
#include "conio.h"
void main()
{
HWND hwnd = GetConsoleWindow();
HMENU hmenu = GetSystemMenu(hwnd, FALSE);
EnableMenuItem(hmenu, SC_CLOSE, MF_GRAYED);
}
В то время как мы на него, чтобы повторно включить кнопку:
EnableMenuItem(hmenu, SC_CLOSE, MF_ENABLED);
... и установить заголовок окна:
char consoleTitle[256];
wsprintf(consoleTitle, _T("My little window"));
SetConsoleTitle((LPCTSTR)consoleTitle);
Я видел, что большинство использованных ссылок DeleteMenu
и не EnableMenuItem
. Я предпочитаю позже, поскольку вы получаете больше контроля (включение/выключение/выделение серых и т. Д.). Полные варианты, посмотрите на MSDN Console Functions и Menu Functions
Вы всегда можете использовать сигналы:
#include <cstdio>
void my_handler(int param) {
main();
}
int main() {
signal(SIGABRT, my_handler);
signal(SIGTERM, my_handler);
return 0;
}
Вы должны явно разрешить возможность для пользователя, чтобы закрыть приложение, изменив my_handler. my_handler вызывает main, поэтому всякий раз, когда программа закрывается, вызывается my_handler, поэтому вызывается main.
- 1. Устранение приложения при нажатии на красный X C#
- 2. Закрытие окна консоли
- 3. Закрытие диалогового окна jQuery при нажатии кнопки
- 4. C# DataGridView Красный X
- 5. Предотвратите закрытие панели Splitview и предотвратите закрытие анимации
- 6. Закрытие окна выбора при нажатии на внешнюю сторону
- 7. Закрытие диалогового окна при нажатии на внешнюю сторону
- 8. Как предотвратить закрытие диалогового окна GWT при нажатии на него
- 9. Закрытие модального окна при нажатии на внешнюю сторону или ESC
- 10. ContentDialog закрытие при нажатии на внешнее приложение
- 11. Закрытие модального при нажатии на x не работает
- 12. Предотвратите закрытие typeahed.js
- 13. SWT - кнопка закрытия окна изменения (красный X)
- 14. Закрытие клавиатуры при нажатии вида - Obj C
- 15. Закрытие приложения без отображения окна консоли
- 16. Закрытие вкладок при нажатии на Android
- 17. Закрытие окна консоли при запуске Start-Job с -Credential
- 18. Как предотвратить закрытие окна tkinter при закрытии командной консоли Windows
- 19. Как предотвратить закрытие окна консоли при запуске консольного приложения?
- 20. File.ReadAllText предотвращает закрытие формы при нажатии кнопки x
- 21. Закрытие модального всплывающего окна при нажатии кнопки внутри модального
- 22. Закрытие окна даже при нажатии кнопки «отменить» в окне подтверждения
- 23. Закрытие всплывающего окна на Android
- 24. Предотвратите дрожащий div при нажатии кнопки
- 25. OSX: запретить закрытие окна при нажатии пользователем команды cmd + w
- 26. Сладостное закрытие предупреждения при нажатии на пробел.
- 27. Закрытие Jframe при нажатии на jbutton
- 28. Закрытие модальности при нажатии на форму отправить
- 29. Закрытие colorbox при нажатии на себя
- 30. Закрытие модального при нажатии на наложение или закрытие кнопки?
Консоль не генерируется программой, она генерируется самой Windows. У вас нет никакого контроля над этим. –
А, я привык работать с C++ Builder и RAD Studio, где у вас есть форма Delphi, чтобы манипулировать свойствами формы. И я использовал приложения формы VB в Visual Studios, поэтому я подумал, что он может сделать то же самое. Спасибо, что расчистил его для меня. – Phil
Да, вы также можете удалить кнопку «Закрыть». Используйте 'GetConsoleWindow' и' GetSystemMenu'. Но сначала я предлагаю вам сделать с фактическим окном (GUI), чтобы получить удобство. – Ajay