使用 JNA 或 JNI 模拟 Windows 中按下的按键

use*_*066 5 java windows keyboard keyboard-hook

我想用Java模拟按键。其他人已经使用 Robot 进行了尝试。这只允许原子按键,我想模拟按键保持(例如,一秒钟)和释放。所以,我需要使用JNA或JNI。

我研究了 JNative,但这似乎是为了在操作系统级别消耗关键事件,而不是在操作系统级别生成它们。如何从 Java 生成此类事件?

谢谢

Jav*_*a42 2

来自 JavaDoc:

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

Presses a given key. The key should be released using the keyRelease method. 
Run Code Online (Sandbox Code Playgroud)

编辑:添加示例:

    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);
Run Code Online (Sandbox Code Playgroud)

目标窗口上的输出:

    aA
Run Code Online (Sandbox Code Playgroud)

(我知道这不是您想要的,但我将其添加为未来的读者作为参考,这样他们就不会认为 JavaDoc 或 Robot 中存在错误)