Anwendung verhindert Herunterfahren von Windows

19/02/2009 - 11:38 von Werner Schmidt | Report spam
Hallo Group,

hat jemand schon mal die Erfahrung gemacht, dass sich Windows nicht
herunterfahren làsst, wenn die eigene Anwendung noch offen ist?

Ich stehe gerade vor folgendem Problem: Wenn ich versuche den Rechner
herunterzufahren, wàhrend meine Anwendung làuft, verliert diese den
Eingabefokus und der Rechner fàhrt nicht herunter.

Drücke ich jetzt Alt+TAB befindet sich in der Task-Liste ein Icon mit
dem Standard-Visual Studio-App.ico mit dem Titel "GDI+ Window", wechsle
ich zu diesem, erscheint in der Taskleiste ein Fenster "GDI+ Window" mit
dem Icon meiner Anwendung. Dieses Fenster besitzt kein Kontextmenü,
làsst sich also weder maximieren noch minimieren noch schließen.

*** Weitere Details ***
Ich habe eine kleine Anwendung erstellt, mit der ich dieses Verhalten
nachzustellen versuche und diese mit Microsoft Spy++ überwacht:
Auch hier gibt es ein Fenster "GDI+ Window" welches wàhrend der gesamten
Programmausführung vorhanden ist.
Fahre ich den Rechner herunter, wàhrend diese Anwendung làuft, wird das
Programm ganz normal beendet und der Rechner fàhrt herunter.

Darüber hinaus habe ich festgestellt, dass unsere Anwendung das
Herunterfahren erst dann verhindert, wenn man sich im eigentlichen
Programm befindet, soll heißen:
Beim Programmstart wird ein Datenbankauswahl-Dialog angezeigt. Wird an
dieser Stelle versucht, den Rechner herunterzufahren, funktioniert dies
tadellos; die Anwendung wird sauber beendet.
Habe ich eine Datenbank ausgewàhlt und befinde mich im Hauptprogramm,
ist ein Herunterfahren nicht mehr möglich.

Eine Überwachung mit Spy++ zeigt an, dass auch hier zu jedem Zeitpunkt
ein Fenster "GDI+ Window" vorhanden ist (also auch beim
Datenbank-Auswahldialog).

*** Weitere Hinweise ***
Ich weiß, dass die Fenster-Darstellung auch bei .Net im Endeffekt über
GDI+ làuft, ich wollte an dieser Stelle nur aufzeigen, auf welches
Verhalten ich stoße.

Die Shutdown-Nachricht (WM_QUERYENDSESSION) fange ich innerhalb der
WndProc() ab, allerdings wird diese scheinbar nicht ausgelöst. Die
Nachricht WM_CLOSE beim Schließen des Formulars kann innerhalb von
WndProc() aber korrekt abgefangen werden.

Normalerweise sollte die Anwendung sich aber auch ohne Überschreiben der
Windows-Nachrichtenschleife sauber beenden.

*** Sonstiges ***
VS2005, .Net2.0, WindowsXP



Gruß

Werner
 

Lesen sie die antworten

#1 Martin Horst
19/02/2009 - 13:00 | Warnen spam
Hi,

Werner Schmidt schrieb:
Hallo Group,

...



nur so eine Idee. Habt ihr euch evtl. in das FormClosing Event gehangen
und prüft dort nicht, woher das Ereignis kommt. Vielleicht hilft es ja.

Gruß
Martin

Ähnliche fragen