Tja, es gibt tausende Möglichkeiten, soetwas zu verhindern.
Nja, erstmal könntest du allen Anwendungen die Shoutdown-Message senden.
Wenn dort eine sagt "nö, ich will nich", dann isses die, welche den Shoutdown "ordentlich" unterbricht.
Dabei könnte man auch gleich schauen ob irgendwe garnicht auf Messages reagiert, also hängt. (wobei man hier eventuell mit Konsolenanwendungen auspassen müßte? )
Dann vielleicht noch nachsehn, ob irgendwe ein "modales Fenster" besitzt, wie z.B. eine Messagebox, welche auf eine Benutzereingabe reagiert.
(hier währe es ja witzig, wenn Windows in dem Warten-Fenster die Message und die Button anzeigt ... bei mir hatte es mal lange auf die "Wurde geändert, soll ich speichern?"-Frage des Notepad oder vom Delphi gewartet)
Und dann kannst du allen noch die Terminate-Messages senden und sehen, wer sich nicht (nach einer gewissen Zeit) beendet.
Und dann .... tja, lange genug warten und das machen, was windows beim "schnellen Runterfahren" macht ... alles was sich nicht beendet einfach "killen" und was nicht verschwindet, hängt wohl mit irgendwelchen Treibergeschichten fest.
Und dann ein Relaise via USB ansteuern und den Strom abschalten.
Wenn da nicht irgendwann aus aus geht, sofort zum Patentamt rennen und den Nobelpreis beantragen.