НОМЕР ДОКУМЕНТА: TI3133 ПРОДУКТ: Delphi Версия: 1.0 ОС: Windows Дата: 1 октября, 1996 Тема: Определение завершения работы Windows
Существует ли возможность определения завершения работы Windows для нормального завершения работы работающего приложения Delphi?
Самым простым решением является создание обработчика события главной формы OnCloseQuery. Данное событие возникает как результат сообщения WM_QUERYENDSESSION, которое посылается всем работающим приложениям Windows в момент инициализации процесса окончания работы Windows. Логическая переменная CanClose, передаваемая обработчику как var-параметр, может позволить программе (и Windows) завершить свою работу, если имеет значение True, значение же False не позволит программе завершить свою работу.
Следующий код демонстрирует как можно воспользоваться данным событием.
Демонстрационный код
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin
{Спрашиваем пользователя, если инициировано завершение работы.} if MessageDlg('Вы уверены?', mtConfirmation, mbYesNoCancel, 0) = mrYes then CanClose := true {Разрешаем завершение работы.} else CanClose := false; {Не разрешаем завершение работы.}end;