我想在Java中模拟一个按键。其他人用机器人试过这个。这只允许一个原子按键,我想模拟一个键保持(一秒钟,比如说)和释放。所以,我需要使用JNA或JNI。
我调查了JNative,但这似乎是为了消耗操作系统级别的关键事件,而不是在操作系统级别生成它们。如何从Java生成此类事件?
由于
答案 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);