W
Ich habs gelöst!
Hier mal eine kurze Zusammenfassung meiner Basteleien:
Zuerst habe ich die LMD-Tools auf Version 7 aktualisiert. Allein dadurch (ohne einen WM_QUERYENDSESSION-Handler) ist der PC nun runtergefahren, falls ich kein Fenster offen hatte.
Hatte ich aber mal ein Programmfenster offen, ist er nicht mehr runtergefahren. Ich konnte zwar die WM_QUERYENDSESSION-Message empfangen, es war aber egal, was ich geantwortet habe (msg.Result = true;), er fuhr nicht runter.
Dann habe ich alte Programmversionen rausgekramt und geprüft, ab welcher Version dieser Bug aufgetreten ist. Als ich das wusste, habe ich in der Versionsverwaltung nachgesehen, was ich zu diesem Zeitpunkt geändert hatte. Es waren ein paar Erweiterungen bezüglich RAS (Wählverbindungen, DFÜ, ...) Unter anderem habe ich ein fertiges Statusfenster, das während des Wählenvorgangs angezeigt wird, hinzugefügt: TApdRasStatus aus den AsyncPro-Komponenten von TurboPower.
Tja, und nachdem ich diese Komponente aus meinem jetzigen Quellcode rausgenommen hatte, fuhr der PC auch wieder brav runter, egal in welchem Zustand mein Tool war.
Diese Komponente lag auf einem Datenmodul, das zu den automatisch beim Programmstart erzeugten Formularen gehört.
Seitdem kann ich auch auf die WM_QUERYENDSESSION-Nachricht reagieren und den Benutzer fragen, ob er sich sicher ist, dass er runterfahren will.