Ich hab mal verschiedenes mit WinXP-Sp2 ausprobiert.
WMQueryEndSession wird nur gefeuert, wenn der Benutzer abgemeldet wird. Beim Killen über den Taskmanager passiert nix. ( Aber gut zu wissen
)
Auch CloseQuery wird nicht gerufen wenn man den Prozess killt.
Ein zweites Programm, welches das Erste überwacht, halte ich für mein Projekt für etwas overkill. Außerdem nützt es mit ja nix, wenn ich weiß, das mein Programm abgeschossen wurde, weil ich es ja eigentlich verhindern will und es gezielt beenden möchte.
Meine Überlegung:
Ein Delphi-Programm besitzt doch einen Haupt-Thread. Der Taskmanger beendet nicht den Thread, sondern unterbricht ihn irgendwie und wirft ihn aus dem Speicher. (hab von Threads relativ wenig Ahnung)
Da Threads ja auch Messages erhalten können, müsste es doch eine Message geben (die den Thread unterbricht,stoppt, killt, was auch immer) die man abfangen könnte. Darin "MachSonstWas" rufen und danach dem sterben freien Lauf lassen.
Funktioniert sowas?