Also soweit sieht es OK aus, höchstens bei
Close; könnte ein Fehler liegen.
Laß dieses Close mal weg und versuch ob's ohne geht.
Der Rest scheint fehlerfrei, allerdings weiß ich nicht wie der Rest deiner Anwendung aussiehtund wie du diese Funktion genau in deine Form integriert hast.
Hab den Thread zwar nicht so verfolgt, aber dort geht's anscheinend auch darum.
Prgramm verhindert herunterfahren
Eventuell könntest du noch versuchen auch noch WM_ENDSESSION zu verarbeiten