Hier sind die Dokumente von Windows SDK. Was das betrifft? Warum , so dass Programme ihre Arbeitsweise anpassen können Strg + C ist auch der Zeichencode 3, der Steuercode ist. Denken Sie auch daran CMD
ist nur ein gewöhnliches Konsolenprogramm wmic
oder ftp
.
Konsolensteuerungshandler
Jeder Konsolenprozess verfügt über eine eigene Liste von Steuerelementfunktionen, die vom System aufgerufen werden, wenn der Prozess ein STRG + C-, STRG + UNTERBRECHUNGS- oder STRG + CLOSE-Signal empfängt. Anfangs enthält die Liste der Steuerhandler für jeden Prozess nur eine Standardhandlerfunktion, die die ExitProcess-Funktion aufruft. Ein Konsolenprozess kann zusätzliche HandlerRoutine-Funktionen hinzufügen oder entfernen, indem die SetConsoleCtrlHandler-Funktion aufgerufen wird. Diese Funktion wirkt sich nicht auf die Listen der Steuerhandler für andere Prozesse aus. Wenn ein Konsolenprozess eines der Steuersignale empfängt, ruft er die Handlerfunktionen auf einer zuletzt registrierten, zuerst aufgerufenen Basis auf, bis einer der Handler TRUE zurückgibt. Wenn keiner der Handler TRUE zurückgibt, wird der Standardhandler aufgerufen.
Der Parameter dwCtrlType der Funktion gibt an, welches Steuersignal empfangen wurde, und der Rückgabewert gibt an, ob das Signal verarbeitet wurde.
Ein Beispiel für eine Steuerhandlerfunktion finden Sie unter Registrieren einer Steuerhandlerfunktion.
CTRL + C- und CTRL + BREAK-Signale
Die Tastenkombinationen CTRL + C und CTRL + BREAK werden durch Konsolenprozesse besonders behandelt. Wenn ein Konsolenfenster den Tastaturfokus hat, wird STRG + C oder STRG + UNTBR standardmäßig als Signal (SIGINT oder SIGBREAK) und nicht als Tastatureingabe behandelt. Diese Signale werden standardmäßig an alle Konsolenprozesse weitergeleitet, die an die Konsole angeschlossen sind. (Einzelne Prozesse sind nicht betroffen.) Das System erstellt in jedem Client-Prozess einen neuen Thread, um das Ereignis zu behandeln. Der Thread löst eine Ausnahme aus, wenn der Prozess debuggt wird. Der Debugger kann die Ausnahme behandeln oder die unbehandelte Ausnahme fortsetzen.
STRG + BREAK wird immer als Signal behandelt, aber eine Anwendung kann das Standardverhalten von STRG + C auf zwei Arten ändern, die den Aufruf der Handlerfunktionen verhindern:
Die SetConsoleMode-Funktion kann den Eingabemodus ENABLE_PROCESSED_INPUT für den Eingangspuffer einer Konsole deaktivieren, sodass STRG + C als Tastatureingabe und nicht als Signal gemeldet wird.
Wenn SetConsoleCtrlHandler mit NULL- und TRUE-Werten für seine Parameter aufgerufen wird, ignoriert der aufrufende Prozess die STRG + C-Signale. Die normale STRG + C-Verarbeitung wird durch Aufrufen von SetConsoleCtrlHandler mit den Werten NULL und FALSE wiederhergestellt. Dieses Attribut des Ignorierens oder Nicht-Ignorierens von STRG + C-Signalen wird von untergeordneten Prozessen geerbt. Sie kann jedoch von jedem Prozess aktiviert oder deaktiviert werden, ohne dass dies Auswirkungen auf vorhandene Prozesse hat.
CTRL + CLOSE Signal
Das System erzeugt ein CTRL + CLOSE-Signal, wenn der Benutzer eine Konsole schließt. Alle an die Konsole angeschlossenen Prozesse empfangen das Signal, sodass jeder Prozess vor der Beendigung bereinigt werden kann. Wenn ein Prozess dieses Signal empfängt, kann die Handler-Funktion nach dem Ausführen von Bereinigungsvorgängen eine der folgenden Aktionen ausführen:
Rufen Sie ExitProcess auf, um den Prozess zu beenden.
Falsch zurückgeben. Wenn keine der registrierten Handlerfunktionen TRUE zurückgibt, bricht der Standardhandler den Prozess ab.
Rückgabe TRUE. In diesem Fall werden keine anderen Handlerfunktionen aufgerufen, und der Benutzer wird in einem Popup-Dialogfeld gefragt, ob der Prozess abgebrochen werden soll. Wenn der Benutzer den Prozess nicht beenden möchte, schließt das System die Konsole erst, wenn der Prozess endgültig beendet ist.
Senden Sie Kommentare zu diesem Thema an Microsoft
Erstellungsdatum: 02.10.2006
wmic
ist ein von Microsoft geschriebenes Produkt.telnet
läuft auf vielen verschiedenen Betriebssystemen und verfügt über eine gemeinsame Standardbenutzeroberfläche.