====== Как определить, что моё приложение хотят завершить ====== объявляем следующию процедуру как: procedure WMQueryEndSession( var Message: TWMQueryEndSession); message WM_QUERYENDSESSION; и определяем её как: procedure TMainFrm.WMQueryEndSession(var Message: TWMQueryEndSession); begin Message.Result:=1; gEndSession := True; end; она будет вызываться, когда Windows пожелает завершиться. Хотя обычно такая процедура вызывается как: procedure TMainFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := True; if gQueryEnd and not gEndSession then if MessageDlg('Quitting (your app name). Are you sure?', mtInformation, mbOKCancel, 0) = mrCancel then CanClose := False end;