У меня такая штука была с CoolTrayIcon. Вот как решается:
Код:
uses ..., messages, windows;
...
type TForm1 = class(TForm)
...
protected
procedure WMShutdown(var Msg: TMessage); message WM_QUERYENDSESSION;
end;
...
procedure TForm1.WMShutdown(var Msg: TMessage);
begin
//тут должна быть процедура, которая выполняется при завершении программы
Msg.Result := 1; //если написать 0, то комп не будет выключаться
Application.Terminate;
end;