Wie kann ich schreiben Sie einen key-listener, um zu verfolgen alle Tastatureingaben in Java?
Ich schreiben möchte ein key listener im Java. Es sollte verfolgen alle Tastatureingaben, unabhängig davon, ob die Java-Anwendung den Fokus hat oder nicht. Ist das möglich?
InformationsquelleAutor der Frage Arghya Chakraborty | 2012-08-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist möglich, erfordert aber eine Implementierung unter Ausnutzung der JNIdie nicht immer tragbar sein.
Java-System-Haken ist eine solche Bibliothek, die die Arbeit mit Windows 32 & 64-bit.
InformationsquelleAutor der Antwort Site Helpers
Benutzte ich so etwas wie, dass vor einer Weile. Werfen Sie einen Blick auf Java-System-Haken.
Verfolgt global key drückt (nicht nur Java-Anwendung) über JNI. Es funktionierte schnell und perfekt für mich
Den KeyListener startet als daemon-thread, die nicht die Anwendung lebendig. Sie haben eine andere läuft nicht-daemon-Threads in Ihrem Programm
Beispiel:
InformationsquelleAutor der Antwort Simiil
Nein, Java hat keinen Zugriff auf Schlüssel-Striche außerhalb des aktiven Fensters.
Um dies zu erreichen, müssten Sie die Verwendung einer Kombination aus Java und native-code mittels JNI aufrufen, die den nativen code. In Microsoft Windows haben, sollten Sie sich
GetAsyncKeyState(key)
.InformationsquelleAutor der Antwort ᴇʟᴇvᴀтᴇ
Es ist sehr viel möglich, aber nicht mit standard-Java, haben Sie, um die Interaktion mit dem Betriebssystem auf einem einheitlichen Niveau.
Hier ist ein Thema für Windows, die verwendet JNA Zugriff auf die SetWindowsHookEx Funktion in der Windows-User32-API.
InformationsquelleAutor der Antwort pap
Nicht, Java funktioniert nicht hören keystokes, wenn es nicht aktiv (fokussiert) Fenster, so dass Sie nicht tun können, dass.
InformationsquelleAutor der Antwort Valdas
Versuchen, diese
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/swing/KeyStroke.java
Den link enthält den erforderlichen Quellcode für Java-swing-Anwendung.
InformationsquelleAutor der Antwort Arjun Prakash
InformationsquelleAutor der Antwort Pax