Ich habe eine Konsolenanwendung, die Folgendes verwendet SetConsoleCtrlHandler
um einen Handler zu setzen, der die CTRL_CLOSE_EVENT
. Der Handler gibt einfach zurück TRUE
woraufhin ein Dialogfeld erscheint, in dem der Benutzer aufgefordert wird, das Herunterfahren fortzusetzen oder abzubrechen.
Die Software läuft unter Windows XP SP3 und Windows Web Server 2008 SP2.
Unter XP wird, wenn das "X" im Konsolenfenster angeklickt wird, mein Control-Handler aufgerufen und eine Eingabeaufforderung erscheint wie erwartet. Auf Server 2008 wird beim Schließen des Konsolenfensters mein Control-Handler nicht aufgerufen und die Anwendung wird ohne Eingabeaufforderung geschlossen.
Um zu überprüfen, ob der Control-Handler korrekt gesetzt wird, habe ich einen Fall für CTRL_C_EVENT
. Ich kann sehen, wie der Code für Strg-C aufgerufen wird.
Gibt es Unterschiede in der Art und Weise, wie Abschlussereignisse in Server 2008 behandelt werden? Es scheint, wie sie nicht durch die ctrl-Handler überhaupt gehen.
EDIT: Ein Blick auf die MSDN-Seite für SetConsoleCtrlHandler
Ich kann keine Informationen finden über CTRL_CLOSE_EVENT
wird in Vista und späteren Versionen nicht mehr gehandhabt.
Wenn Sie mit Windows arbeiten ( HWND
) anstelle von Konsole ctrl-Ereignisse, ist es möglich, die Schließen-Nachrichten an das Konsolenfenster gesendet zu erhalten und behandeln, dass?