TForm1 = class(TForm)
...
private
procedure WndProc(var Message: TMessage); override;
...
end;
...
procedure TForm1.WndProc(var Message: TMessage);
begin
Case Message.Msg of
WM_QUERYENDSESSION:begin
//Здесь выполняем какие-то действия по закрытию программы при завершении работы компа
end;
else
inherited WndProc(Message);
end;
end;
...