Ich habe mal was zusammen geschraddelt. Das ist nicht wirklich gut. Aber die angefragte Funktionalität ist da. D.h. der Neustart des Systems wird verhindert. Getestet mit Delphi 2007 unter Windows 10Pro-64Bit und Windows 7Pro-32Bit.
Edit: Geänderte Version. Zusätzlich mit ausführbarer Datei.
Danke samso, Deine EXE läuft. Wenn ich dein Demoprojekt unverändert mit Delphi 2010 neu kompiliere, läuft es nicht mehr: Man sieht zwar den Text der BlockReason und es geht auch ganz kurz die Frage auf, ob gespeichert werden soll. Dann wird das Programm aber sofort und automatisch geschlossen, ohne das man einen Button im Dialog geklickt hat. Windows fährt dann nicht herunter.
Wenn ich das Projket mit Delphi 10 Seattle neu compliere ist alles OK. Was macht Delphi 2010 also anders? Evtl. eine Compiler-Einstellung oder ein Bug? Kann das jemand mal bitte mit Delphi 2010 ausprobieren? Im Anhang Dein Log, was meine mit Delphi 2010 erzeugte EXE geschrieben hat. Das sieht schon komisch aus.