Wie kann ich den Tastaturstatus erfassen, wenn meine Anwendung nicht den Fokus hat?

8

Der neue Laptop meiner Freundin hat keine Anzeige-LEDs für NumLock und CapsLock, also habe ich ein kleines Programm geschrieben, das ihren Status auf dem Bildschirm anzeigt:

%Vor%

Dies funktioniert, solange mein Programm den Fokus hat, aber wenn der Fokus auf andere Programme geht, werden die Status nicht mehr aktualisiert. (Es genügt jedoch, nur die Maus über das Formular zu bewegen, ohne zu klicken.)

Wie kann ich das Programm aktualisieren lassen, wenn eine andere Anwendung den Fokus hat?

    
Joris Groosman 22.12.2015, 07:01
quelle

2 Antworten

8

Sie können einfach GetKeyState in Ihrem Timer.

%Vor%

Dies funktioniert auch dann, wenn Ihre Anwendung nicht den Fokus hat. Getestet auf XP.

    
kobik 23.12.2015, 09:25
quelle
3

Sie sollten einen Low Level Keyboard Hook , weil Sie dann für jeden Tastenanschlag benachrichtigt werden können, selbst wenn Ihre Anwendung keinen Fokus hat.

Ich habe ein kleines Beispiel für dich erstellt

%Vor%

Grundsätzlich auf formCreate hake ich die Tastatur, und teilt meinem Programm mit, in welcher Funktion ich meine Benachrichtigung brauche. In meinem Beispiel habe ich es LowLevelKeyboardProc

genannt

Dann müssen Sie nur testen, welche Taste gedrückt wird, und wenn es eine der CapsLock Num Lock ist, dann noify das Formular.

    
Jens Borrisholt 22.12.2015 08:13
quelle

Tags und Links