Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Как отловить закрытие Windows?


Автор: Петров Андрей 24.6.2004, 13:53
Здравствуйте уважаемые!

Необходимо сделать резервную копию БД при закрытии Windows. Вопросы в следующем
1) Как отловить событие закрытия Windows?
2) Как успеть на него среагировать т.е. преостановить закрытие и успеть заархивировать, продолжив после этого закрытие?

Ответы лучше на мыло [email protected] smile.gif

Автор: Chingachguk 26.6.2004, 07:51
Может быть, тебе подойдет перехват ExitProcess ? ... Еще возможен сервис, смотрящий за окнами (FindWindow по имени окна). Надо выяснить имя окна закрытия (ALT+F4) и тогда...

Автор: oleg1973 26.6.2004, 10:24
проблема в том что в разных вындоса через разные апи выключение вындоса происходит
ExitWindows
ExitWindowsExec
SHExitWindowsEx

в НТ/ХР есть непосредственно команда SHUTDOWN
так что ловить придется все и сразу smile.gif

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

Автор: Jin X 27.6.2004, 18:44
Никаких API не нужно ничего перехватывать smile.gif
В обработчике окна (если окон нет, создаёшь невидимое) проверяешь сообщения:
1. WM_ENDSESSION и WM_DESTROY.
2. Если интересует Hibernate и Suspend, то WM_POWERBROADCAST. При этом wParam == PBT_APMSUSPEND при засыпании и wParam == PBT_APMRESUMESUSPEND при пробуждении.
При их возникновении делаешь что нужно и выходишь из обработчика с EAX=0.

Автор: oleg1973 28.6.2004, 10:38
Jin X
ну блин земляк и я о томже biggrin.gif

Автор: Oleg_SK 10.12.2004, 22:19
Jin X
2. Если интересует Hibernate и Suspend, то...
Дополнение: это же сообщение поступает и при переходе ATX-компа в режим SoftOff (т.е. программное выключение), после нажатия кнопки POWER.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)