Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Завершение работы Windows [D7, WinXP]


Страницы:   1 2

Интересующийся ©   (2007-03-09 08:52:00) 

Всем доброе время суток!

Подскажите как отловить завершение работы ОС из моей проги или попытку пользователя снять прогу нестандартным способом?


Интересующийся   (2007-03-09 11:04:00) [21]

> Сергей М. ©   (09.03.07 10:59) [7]

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

К примеру если выгрузили по требованию юзира, скорей всего все задания на этот момент были выполнены. Чего при отключении по требованию ОС могло и непроизойти. Тогда нужно доделать работу или исправить возможные ошибки.


Сергей М.   (2007-03-09 11:01:00) [22]


> if Message.WParam=1 then Close;//Вырубаем прогу


Это вообще лишняя строчка.


Интересующийся   (2007-03-09 10:59:00) [23]

Само завершение работы ОС отлавливается этим кодом:


Procedure TFMISDiana.WMENDSESSION(var Message:TMessage);
Begin

inherited;

if Message.WParam=1 then Close;//Вырубаем прогу

End;


Сергей М.   (2007-03-09 10:59:00) [24]


> записать почему и когда ее выгрузили.


Ну с "когда выгрузили" - это еще понятно.
А зачем нужно знать "почему выгрузили" ?
Если алгоритм "проги" в принципене препятствует ее "выгрузке", то не все ли равно, кто явился инициатором ее завершения - то ли юзер, то ли сама ОС ?


Интересующийся   (2007-03-09 10:55:00) [25]

Прога должна корректно данные сохранить и в лог инфу записать почему и когда ее выгрузили.

Комп работает под управление APC, который при отключении питания держет комп необходимое время (по истечению которого происходит завершение работы ОС).


Сергей М.   (2007-03-09 10:21:00) [26]

Все уже "отловлено".
Тебе остается только в обработчике события OnCloseQuery гл.формы написать

CanClose := True

А, собственно, зачем отслеживать момент завершения работы ОС ?


Интересующийся   (2007-03-09 10:12:00) [27]

> Сергей М. ©   (09.03.07 09:44) [3]
> Тогда лови WM_QUERYENDSESSION

А поподробней об WM_QUERYENDSESSION можно, а то я ееотловить не могу?


Сергей М.   (2007-03-09 09:44:00) [28]


> Обычная фора (GUI как видно)


Тогда лови WM_QUERYENDSESSION


Интересующийся   (2007-03-09 09:42:00) [29]

> Сергей М. ©   (09.03.07 09:19) [1]
> Смотря что за "прога" - GUI, консоль, сервис ...

Обычная фора (GUI как видно).
SYSCOMMAND отловить наверно нужно, но с каким параметром?


Сергей М.   (2007-03-09 09:19:00) [30]


> из моей проги


Смотря что за "прога" - GUI, консоль, сервис ...


> попытку пользователя снять прогу нестандартным способом


Никак.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо