0

使用 Robot 类时,是什么意思:

robot.keyRelease(KeyEvent.VK_CONTROL);

下面的代码不应该足以发送事件吗?

Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
4

2 回答 2

1

keyPress将发送一个按键被按下的事件。 keyRelease将发送密钥已被释放的事件。如果您想模拟打字,您可能需要执行以下操作:

public class SuperRobot extends Robot {
    public void typeKey(int keyCode) {
        keyPress(keyCode);
        delay(20);
        keyRelease(keyCode);
    }
}

public static void main(String[] args) {
    try {
        SuperRobot r = new SuperRobot();
        // Now, let's press Ctrl+A
        r.keyPress(KeyEvent.VK_CONTROL);
        r.typeKey(KeyEvent.VK_A);
        r.keyRelease(KeyEvent.VK_CONTROL);
    } catch (Exception ex) { // Either AWTException or SecurityException
        System.out.println("Oh no!");
    }
}

请注意,要键入带有掩码的内容,例如 Ctrl+A,我们首先按下 Ctrl,然后模拟按下并释放 A,然后释放 Ctrl。作为一般规则,机器人应该或多或少准确地模拟您作为用户会做的事情。

于 2011-09-06T06:57:46.187 回答
0
robot.keyRelease(KeyEvent.VK_CONTROL); 

对于释放按键的按下效果,如果您使用robot.keyPress(KeyEvent.VK_CONTROL); 按下了按键 然后你也应该释放它,否则一旦你的 java 应用程序运行,你的键盘将继续按下 CTRL 键。

于 2014-05-06T12:46:19.347 回答