![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Завершение работы Windows [D7, WinXP]
Интересующийся © (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, консоль, сервис ...
> попытку пользователя снять прогу нестандартным способом
Никак.