Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.13;
Скачать: CL | DM;

Вниз

Определение завершения работы Windows   Найти похожие ветки 

 
Woolen ©   (2002-03-09 14:54) [0]

Народ, спасайте! Срочно нужно! Горю! Не знаю, как определить, что Windows завершает работу. Ситуация примерно такая. В OnCloseQuery прога выдает запрос пользователю на завершение работы, но при завершении Windows OnCloseQuery тоже вызывается. Как сделать, чтобы пользователь мог отменить завершение приложения в случае, если он его сам закрываеть, и в тоже время, чтобы прога определяла, если происходит завершение работы Windows и не выдавала запроса при этом? Пишу прогу на D6 для всех виндов, начиная с NT4.0. Т.е. NT4.0, 98, 2000, Me, XP.
Заранее благодарен.


 
Anatoly Podgoretsky ©   (2002-03-09 15:00) [1]

Windows посылает сообщения WM_QUERYENDSESSION и затем WM_ENDSESSION вот и создай для них обработчики


 
Woolen ©   (2002-03-09 16:07) [2]

Спасибо! Только один вопрос. А OnCloseQuery случаем не происходит при приеме сообщения WM_QUERYENDSESSION? А то получится тоже самое и никакой разницы не будет.


 
Suntechnic ©   (2002-03-09 17:17) [3]

>Woolen © (09.03.02 16:07)
Происходит. Потому как Windows не прерывает процесс путём TerminateProcess, а пытается его завершить корректно. Ты можешь поступить слудующим образом. Объявить в классе главной формы флажок, который будет показываеть, что приложение закрывается из-за выгрузки Windows. По умолчанию установи его в FALSE. В событии OnCloseQuery проверяй его. Если флаг установлен, тогда не выдавай подтверждение закрытия, а если нет, тогда выдавай. Затем лови сообщение WM_QUERYENDSESSION и устанавливай этот флаг....


 
y-soft ©   (2002-03-09 22:45) [4]

>Пишу прогу на D6 для всех виндов, начиная с NT4.0. Т.е. NT4.0, >98, 2000, Me, XP.

Надо еще учесть, что в Win9X/Me и WinNT/2000/XP алгоритм посылки этих сообщений ОС (WM_QUERYENDSESSION, WM_ENDSESSION) разный. Кроме того в WinNT SP6A возникает неприятный глюк, если приложение отвечает на сообщение отрицательно (См MSDN Q245148)



Страницы: 1 вся ветка

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
1-39706
zje
2002-04-29 17:00
2002.05.13
RichEdit


1-39781
hogus
2002-04-28 08:03
2002.05.13
Работа с Временем (TDateTime)


6-39807
Di_wind
2002-02-22 23:26
2002.05.13
Arp


3-39666
Gamar
2002-04-17 17:06
2002.05.13
Звполнение дат без точек


7-39874
Потерянный
2002-02-13 16:10
2002.05.13
Спящий режим