windows - Fange globale tastetryk med java.awt.Toolkit

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg fandt metoden addAWTKeyListener i klasseværktøjet, men jeg kan ikke få det til at fungere korrekt, uanset om vinduet har fokus. Min kode er som følger:


import java.awt.AWTEvent;
import java.awt.Toolkit;
import java.awt.event.AWTEventListener;
import java.awt.event.KeyEvent;


public class KeyTest {

    public static void main(String[] args){
    Thread t = new Thread(){
        @Override
        public void run() {
        System.out.println("STARTING");
        Toolkit kit = Toolkit.getDefaultToolkit();
        kit.addAWTEventListener(new AWTEventListener(){

            @Override
            public void eventDispatched(AWTEvent event) {
            System.out.println("EVENT");
            if(event instanceof KeyEvent){
                KeyEvent kEvent = (KeyEvent) event;
                System.out.println(kEvent.getKeyCode());
            }
            }

        }, AWTEvent.KEY\_EVENT\_MASK);
        while(true);
        }
    };
    t.start();
    }

}


Er der noget jeg gør galt? Jeg kommer til det punkt, at STARTING udskriver, og der er ingen fejl. Jævn er simpelthen ikke kaldt.

Bedste reference


Jeg kan være forkert, da jeg 'bestemt ikke er ekspert, men så vidt jeg ved, hvad du prøver at gøre, er ikke muligt i Java.


Forsøger du at fange et nøgleklip ved hjælp af et Java-program, men uden at oprette et vindue? En del af Java 's sikkerhed, og det er det, jeg kan have forkert på, er, at det kun kan lytte til begivenheder inde i Java-vinduer, der er oprettet af det pågældende Java-program.


Så hvis du forsøgte at lave noget key-logger-esque, der løber i baggrunden og indfanget en nøglepres, ville det ikke være muligt.


Jeg ville ønske, at jeg kunne give dig et mere konkret svar, men jeg håber det hjalp.

Andre referencer 1


Bare et gæt, men du har ikke nogen AWT-vinduer i det, så jeg gætter det derfor, begivenheden bliver aldrig fyret.


Når du siger 'om vinduet har fokus eller ikke' har din rigtige app vinduer, som du har hugget ud eller taler om et java-konsolvindue eller lignende?