Java =>机器人执行错误的命令

时间:2014-02-11 13:38:52

标签: java input

我创建了这个机器人:

   try {
       // Create class
       Robot robot = new Robot();

       // Wait 2 sec
       robot.delay(2000);

       // Get mouse on "texteditor"-symbol
       robot.mouseMove(920, 840);

       // Press it
       robot.mousePress( InputEvent.BUTTON1_MASK );
       robot.delay( 100 );
       robot.mouseRelease( InputEvent.BUTTON1_MASK );

       // Wait 2 sec
       robot.delay( 2000 );

       // Write "Hello" in "texteditor"
       robot.keyPress(KeyEvent.VK_H);
       robot.delay( 1000 );
       robot.keyPress(KeyEvent.VK_E);
       robot.delay( 1000 );
       robot.keyPress(KeyEvent.VK_L);
       robot.delay( 1000 );
       robot.keyPress(KeyEvent.VK_L);
       robot.delay( 1000 );
       robot.keyPress(KeyEvent.VK_O);

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

好的,当我启动程序时会发生什么? :

  1. 机器人等待2秒。 =>好

  2. 鼠标移到texteditor-symbol =>好

  3. 按下=> texteditor打开=>好

  4. 机器人等待2秒=>好

  5. 机器人在短信发送者中写“l”,其余单词可以在机器人的源代码中找到=&gt;不好!<​​/ p>

  6. 任何建议我做错了什么或我怎么做到这一点?问候和谢谢!!

1 个答案:

答案 0 :(得分:1)

根据the documentation

  

public void keyPress(int keycode)

     

按下给定的键。应使用keyRelease方法释放密钥。 (...)

您的代码只按键,不会释放它们。打开您喜欢的文本编辑器,并尝试手动编写“hello”而不释放您按下的任何键。键入第二个L时会发生什么?钥匙已经按下了。

使用适当的版本尝试以下代码:

robot.keyPress(KeyEvent.VK_H);
robot.keyRelease(KeyEvent.VK_H);
robot.delay( 1000 );
robot.keyPress(KeyEvent.VK_E);
robot.keyRelease(KeyEvent.VK_E);
robot.delay( 1000 );
    /* ... */