Desligar Computador (ou Reiniciar, qualquer coisa do tipo), primeiramente vá
na seção private da declaração de classe na unit do form principal e digite
a seguinte linha:
procedure WMEndSession (var Msg : TWMEndSession); message WM_ENDSESSION;
Depois, na seção implementation da unit, digite a seguinte rotina:
procedure TNomeDoForm.WMEndSession (var Msg : TWMEndSession);
begin
if Msg.EndSession = TRUE then
FazAlgo; // Aqui você faz o que tem que fazer
inherited;
end;
FONTE: http://www.guiadodelphi.com.br/ler.php?codigo=667