java - Brug JNA eller JNI til at simulere nøgler, der holdes nede i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil simulere en tastetryk i Java. Andre har prøvet dette ved hjælp af robot. Dette tillader kun en atomtryk, hvor jeg vil simulere et nøglehold (for et sekund sige) og slippe ud. Så jeg skal bruge JNA eller JNI.


Jeg undersøgte JNative, men det synes at være at forbruge vigtige begivenheder på et OS-niveau, og ikke generere dem på et OS-niveau. Hvordan kan jeg generere sådanne begivenheder fra Java?


Tak

Bedste reference


Faktisk kan du ved hjælp af Robot holde nøglen nede for anden gang.


Robot r = ...
r.keyPress(KeyEvent.VK\_A);
Thread.sleep(1000);
r.keyRelease(KeyEvent.VK\_A);

Andre referencer 1


Fra JavaDoc:


void java.awt.Robot.keyPress(int keycode)

Presses a given key. The key should be released using the keyRelease method. 


EDIT: Tilføjelse af en prøve:


    Robot robot = new Robot();
    System.out.println("You have 2 seconds to jump to the target window...");
    Thread.sleep(2000);
    robot.keyPress( KeyEvent.VK\_A);
    robot.keyRelease( KeyEvent.VK\_A);
    robot.keyPress( KeyEvent.VK\_SHIFT);
    robot.keyPress( KeyEvent.VK\_A);
    robot.keyRelease( KeyEvent.VK\_SHIFT);
    robot.keyRelease( KeyEvent.VK\_A);
    Thread.sleep(2000);


Ouput på målvinduet:


    aA


(Jeg ved det ikke, hvad du vil, men jeg tilføjede det til fremtidige læsere som en reference, så de tror ikke, der er en fejl i JavaDoc eller Robot)