Versuchen Sie es mit globalem Hooking in Java mithilfe der JNativeHook-Bibliothek

Writer-Umgebung

Windows10 Home / JDK1.8

Maven-Repository

<dependency>
    <groupId>com.1stleg</groupId>
    <artifactId>jnativehook</artifactId>
    <version>2.1.0</version>
</dependency>

Probieren Sie es vorerst aus (klicken Sie auf die Taste)

import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;

public class Example implements NativeKeyListener {
    public static void main(String[] args) {
        //Wenn nicht eingehakt
        if (!GlobalScreen.isNativeHookRegistered()) {
            try {
                //Haken registrieren
                GlobalScreen.registerNativeHook();
            } catch (NativeHookException e) {
                e.printStackTrace();
                System.exit(-1);
            }
        }
        //Registrieren Sie den Key Listener
        GlobalScreen.addNativeKeyListener(new Example());
    }

    //Wenn Sie eine Taste drücken
    @Override
    public void nativeKeyPressed(NativeKeyEvent e) {
        System.out.println(e.paramString());
    }
    
    //Wenn Sie den Schlüssel loslassen
    @Override
    public void nativeKeyReleased(NativeKeyEvent e) {
        System.out.println(e.paramString());
    }

    //Wenn Sie den Schlüssel eingeben
    @Override
    public void nativeKeyTyped(NativeKeyEvent e) {
        System.out.println(e.paramString());
    }
}

Mit diesem Code können Sie einen Schlüssel-Listener für alle laufenden Threads einrichten, nicht nur für den Thread, in dem dieser Code ausgeführt wird.

Das Ereignis tritt auf, wenn Sie eine Taste in einer Software wie Chrome oder Minecraft drücken.

Außerdem ist jede Schlüsselereigniskonstante mit jeder java.awt.event.KeyListener-Konstante identisch.

Was ist mit anderen Zuhörern?

//Maushörer
GlobalScreen.addNativeMouseListener(NativeMouseListener);

//Mausbewegungshörer
GlobalScreen.addNativeMouseMotionListener(NativeMouseMotionListener);

//Mausrad Listener
GlobalScreen.addNativeMouseWheelListener(NativeMouseWheelListener);

Und mausbezogene Listener sind verfügbar.

Löschen Sie das Protokoll

Wenn Sie es nicht benötigen, wird standardmäßig eine beträchtliche Anzahl von Protokollen ausgegeben. LogManager.getLogManager().reset(); Fügen wir noch etwas zur Hauptmethode hinzu.

Machen Sie das Ereignis zu einer Textdarstellung

Es gibt eine paramString () -Methode, also verwenden wir sie.

Recommended Posts

Versuchen Sie es mit globalem Hooking in Java mithilfe der JNativeHook-Bibliothek
Versuchen Sie es mit der Stream-API in Java
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
Versuchen Sie es mit RocksDB mit Java
Versuchen Sie, das Eratostenes-Sieb mithilfe der Java-Standardbibliothek zu implementieren
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
[Java] Versuchen Sie, die Elemente der Json-Zeichenfolge mithilfe der Bibliothek zu bearbeiten
[Java] Verwenden Sie kryptografische Technologie mit Standardbibliotheken
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie, den CORBA-Dienst unter Java 11+ aufzurufen
Versuchen Sie es mit der Wii-Fernbedienung in Java
ChatWork4j für die Verwendung der ChatWork-API in Java
Versuchen Sie es mit Sourcetrail (Win-Version) mit Java-Code
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Versuchen Sie es mit Sourcetrail (MacOS-Version) mit Java-Code
Versuchen Sie, mit JZOS von Java aus auf das Dataset zuzugreifen
Zeigen Sie "Hello World" im Browser mit Java an
Zeigen Sie "Hello World" im Browser mit Java an
Unterschiede im Code bei Verwendung des Längensystems in Java
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie, JavaScript in Java aufzurufen
Probieren Sie den Funktionstyp in Java aus! ①
Implementieren Sie Thread in Java und versuchen Sie, die anonyme Klasse Lambda zu verwenden
Ich habe versucht, die CameraX-Bibliothek mit Android Java Fragment zu verwenden
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
[Java] Abrufen von Datumsinformationen 10 Tage später in Millisekunden in der Datumsklasse
Versuchen Sie, Android Hilt in Java zu implementieren
[Java] Versuchen Sie, das Fizz Buzz-Problem mithilfe der rekursiven Verarbeitung zu lösen
Geben Sie den Java-Speicherort in eclipse.ini an
Java-Vergleich mit der compareTo () -Methode
Entpacken Sie die Zip-Datei in Java
Versuchen Sie, Selenuim 3.141.59 mit Eclipse (Java) auszuführen.
Versuchen Sie einen If-Ausdruck in Java
Analysieren der COTOHA-API-Syntaxanalyse in Java
Versuchen Sie es mit dem Nachrichtensystem Pulsar
HTTPS-Verbindung mit tls1.2 in Java 6
Ich habe versucht, JWT in Java zu verwenden
Versuchen Sie, AWS X-Ray in Java auszuführen
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist
Versuchen Sie, Yuma in Java zu implementieren
Versuchen Sie es mit der IBM Java-Methodenverfolgung
Versuchen Sie es mit dem Java SDK von Hyperledger Iroha
[Java] Wo haben Sie versucht, Java zu verwenden?
Rufen Sie die Super-Methode in Java auf
NLP4J Versuchen Sie eine syntaktische Analyse von Japanisch unter Verwendung der japanischen Abhängigkeitsanalyse (V1) von Yahoo! Developer Network in Java
Analysieren und objektivieren Sie JSON mithilfe der Annotation @JsonProperty von Jackson, einer Java-Bibliothek
Über das Phänomen, dass StackOverflowError bei der Verarbeitung mit regulären Java-Ausdrücken auftritt
Versuchen Sie es mit dem Java Framework Nablarch [Web Application]
Holen Sie sich das Ergebnis von POST in Java
Versuchen Sie, || anstelle des ternären Operators zu verwenden
Versuchen Sie, Project Euler in Java zu lösen
Java-Referenz zum Verständnis in der Abbildung
Versuchen Sie, den Dienst auf Android Oreo zu verwenden
Newcomer-Training mit der Web-Basic-Programmierung mit Java-
Rufen Sie die Windows-Benachrichtigungs-API in Java auf
Java lernen Versuchen Sie es mit einem Scanner oder einer Karte
Notizen im Kopf organisieren (Java-Arrangement)