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

时间:2012-03-26 02:56:51

标签: java windows keyboard keyboard-hook

我想在Java中模拟一个按键。其他人用机器人试过这个。这只允许一个原子按键,我想模拟一个键保持(一秒钟,比如说)和释放。所以,我需要使用JNA或JNI。

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

由于

2 个答案:

答案 0 :(得分:2)

来自JavaDoc:

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

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

编辑:添加样本:

    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);

目标窗口上的输出:

    aA

(我知道这不是你想要的,但我把它作为参考添加给未来的读者,所以他们认为JavaDoc或Robot中没有错误)

答案 1 :(得分:2)

实际上,使用机器人你可以按住一个键。

Robot r = ...
r.keyPress(KeyEvent.VK_A);
Thread.sleep(1000);
r.keyRelease(KeyEvent.VK_A);
相关问题