Java =>缩短机器人的命令

时间:2014-02-11 14:54:15

标签: java input automation awtrobot

嘿那里使用这段代码:

try {

      Robot robot = new Robot();

      robot.keyPress(KeyEvent.VK_H);
      robot.keyRelease(KeyEvent.VK_H);
      robot.keyPress(KeyEvent.VK_A);
      robot.keyRelease(KeyEvent.VK_A);
      robot.keyPress(KeyEvent.VK_L);
      robot.keyRelease(KeyEvent.VK_L);
      robot.keyPress(KeyEvent.VK_L);
      robot.keyRelease(KeyEvent.VK_L);
      robot.keyPress(KeyEvent.VK_O);
      robot.keyRelease(KeyEvent.VK_O);

 } catch (AWTException e) {
      e.printStackTrace();
 }

我得到了这个结果:

hallo

但有没有办法缩短这个过程?例如类似的东西:

try {

       Robot robot = new Robot();

       String  word = "hallo";

       // something like:
       robot.keyPress(KeyEvent.word);

   } catch (AWTException e) {
       e.printStackTrace();
   }

我知道这个例子不起作用,但我找不到任何关于此的文档。

你有什么想法吗?问候和感谢

2 个答案:

答案 0 :(得分:4)

如果您使用的是Java 7,则可以使用KeyEvent.getExtendedKeyCodeForChar方法从char中获取密钥代码:

   import java.awt.event.KeyEvent; 

   [...]

   public static void type(Robot robot, String word) {
        for (int i = 0; i < word.length(); i++) {
            int keyCode = KeyEvent.getExtendedKeyCodeForChar(word.charAt(i));
            robot.keyPress(keyCode);
            robot.keyRelease(keyCode);
        }
    }

   [...]

   Robot robot = new Robot();
   type(robot, "hallo");

答案 1 :(得分:1)

制作这样的方法。只需使用带有角色的方法。

public void press(String s, Robot r)
{
    for (char ch : s.toCharArray())
    {
        if (Character.isUpperCase(ch))
            r.keyPress(KeyEvent.VK_SHIFT);

        r.keyPress(Character.toUpperCase(ch));
        r.keyRelease(Character.toUpperCase(ch));
    }
}

或者您可以使用它来获取KeyCode。

KeyStroke.getKeyStroke(ch, 0).getKeyCode();

或者

KeyEvent.getExtendedKeyCodeForChar(ch);

希望这有帮助。