3 Stimmen

Deaktivieren der Tastatur in Windows c++?

Wie kann ich die Tastatur mit C++ in Windows vollständig deaktivieren? Und mit vollständig deaktivieren meine ich, so dass sogar Ctrl + Alt + Delete funktioniert nicht. Ich habe in Erwägung gezogen, einen Tastaturtreiber zu verwenden, aber ich glaube, man muss den Computer neu starten, nachdem er installiert wurde, aber da ich ihn nur für ein paar Minuten deaktivieren muss, würde das nicht wirklich funktionieren.

5 Stimmen

Warum glauben Sie, dass Sie das tun müssen?

13voto

Christopher Punkte 8744

Das ist nicht wirklich möglich.

WinLogon ist als der Prozess konzipiert, der die Ctrl + Alt + Del Tastendruck, auch wenn alle anderen Dinge hängen bleiben oder sterben. Dies ist die Ausfallsicherung gegen böswillige Sitzungen usw. Es gibt also keine offensichtliche Abhilfe.

Vielleicht würde ein Tastaturfilter-Treiber Ihr Anliegen möglich machen, aber das ist ein echter Kernel-Treiber.

9voto

Mike McQuaid Punkte 9326

Sie können nicht deaktivieren Ctrl - Alt - Delete ohne die Tastatur zu entfernen oder den Tastaturtreiber zu ersetzen, wird eine Benachrichtigung auf Kernel-Ebene erzeugt.

1voto

Indy9000 Punkte 8404

Sie könnten einen Tastaturhaken installieren und die Nachrichten herausfiltern, aber Sie müssten Ihre Anwendung als oberstes Fenster haben. Selbst dann Ctrl + Alt + Del würde nicht herausgefiltert werden.

Hier ist SetWindowsHookEx auf MSDN

Beispiel für Anschließen der Tastatur

1voto

Kirill V. Lyadvinsky Punkte 92957

Sie könnten verwenden BlockEingang Funktion. Aber sie blockiert nicht CTRL + ALT + DEL .

0voto

selbie Punkte 90407

Ok, hier sind einige zufällige Vorschläge. Ich habe keine endgültige Antwort, aber hier würde ich anfangen:

1) SetupDiRemoveDevice ist wahrscheinlich die API, die Sie aufrufen möchten. Um sie aufzurufen, müssen Sie allerdings eine Menge anderer Geräteaufrufe tätigen. Zählen Sie Ihre HID- und USB-Geräte auf und finden Sie die Tastatur. Suchen Sie zunächst nach der VID/PID des eigentlichen Geräts.

2) Löschen Sie die Treiber kdbclass.sys und kbdhid.sys. Sie werden mit der Windows-Systemdatei kämpfen müssen, um dies zu tun. Ich habe keine Ahnung, ob dies funktionieren wird, aber es klingt interessant und einfach.

3) Schreiben Sie einen USB-Filtertreiber. Ihr Treiber muss die Vid/Pid des zu filternden Geräts kennen (oder übergeben bekommen), aber es könnte funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X