| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Отключить закрытие программы. |
| Автор: Oberon83 10.6.2005, 18:40 | ||||
| Каким образом можно сделать так, чтобы моя программа не закрывалась по сочетанию Alt+F4. Работаю в C++ Builder 6. Следующий код не работает(хотя должен):
Никак не могу понять почему. Система - WinXP Так же не работает отключение кнопок Свернуть и Минимизировать:
Тоже почему не знаю... |
| Автор: JoyEx 22.6.2005, 22:54 |
| Попробуйте сделать обработчик сообщения WM_CLOSE. |
| Автор: Любитель 22.6.2005, 23:49 |
| Можно свой хот-кей кинуть. |
| Автор: En_t_end 23.6.2005, 05:48 | ||
| Oberon83 Вопрос задан не корректно. Отключить закрытие программы невозможно, потому что система всегда оставляет за собой право шутдаунить любой процесс. Юзать блокировку Alt-F4 - это по ламерски, извиняюсь за выражение.
А прикинь, у него открыто ещё пять прилаг, и ему вдруг захотелось закрыть какую-то другую прогу, но нет из-за этого хот-кея сообщение будет посылаться именно этой проге и остальное не закроется, тем самым чел ощутит дисскомфорт. JoyEx Более реальный совет, но винды тоже не тупые, если ты сделаешь там что-то типа goto, то система все равно аварийно вырубит прилагу через определенный промежуток времени, прямо по середине какой-то работы, но то есть специальный таймаут. |
| Автор: JoyEx 23.6.2005, 07:05 | ||
| En_t_end Если корректно, быстро обрабатывать WM_CLOSE от ALT+F4, то ВинниПух ничего плохого не сделает. Можно это делать примерно так на VC:
Главное, чтобы поток получивший WM_CLOSE от accelerators незамедлительно обработал это сообщение. Можно еще глобально сделать: взять исходник .sys фильтра клавиатуры \WINDDK\.......\src\input\kbfiltr из DDK, добавить в него пару строк (запретить комбинации клавиш) и установить потом его в Windows. Только не просите меня сделать это за Вас сегодня. |
| Автор: codelord 26.6.2005, 21:37 | ||
А по моему все очень просто, берешь в параметре формы, если есть onClose, ставишь строку
|
| Автор: Nemesis 30.6.2005, 11:39 |
| В таком случае программа просто перезапустит себя. Можно просто получив сообщение WM_CLOSE не передавать его системе, а заменить его скажем на WM_PRINT (портим окно и заставляем послать новое сообщение). |
| Автор: oper54 30.6.2005, 13:16 | ||
| Не долго мучаясь ВОТ -
|