Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Вниз

Определение завершения работы 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.004 c
1-39738
Демон
2002-04-27 17:29
2002.05.13
На счет того как растянуть и перетащить


1-39772
Anton+
2002-04-28 21:03
2002.05.13
Сбросить таймер.


3-39667
Desdechado
2002-04-16 17:11
2002.05.13
UDF в Interbase


1-39737
cypher
2002-04-26 23:17
2002.05.13
Очень срочный вопрос!!


1-39803
maks
2002-04-27 16:47
2002.05.13
[D6] Кто-нибудь ставил LMD-Tools помогите советом.....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский