Also, bin schonmal ein Stück weiter:
Wenn man eine Tastatur mit einer Sleep-Taste hat und diese drückt, wird es abgefangen, bei der Power-Taste aber nicht.
EDIT:
Unit nochmal geändert. Es geht anscheinend nur mit dem Hook, es fehlte nur das result. Bei
procedure WMPOWERBROADCAST(var msg: TMessage); message WM_POWERBROADCAST;
innerhalb der Komponente tut sich gar nichts. Desweiteren hab ich noch WM_QUERYENDESSSION eingebaut, evtl. hilft das.