2014-03-04 50 views
1

我有一个非常简单的问题,或者至少我认为它很简单。目前我正在尝试使用带变量的机器人类。我的意思是以下(变量“通行证”的字符。)使用变量的Java机器人类

  pass1 = 0; 
      pass2 = 0; 
      pass3 = 0; 
      pass4 = 0; 


       try{ 
         Robot robot = new Robot(); 
         robot.delay(2000); 

         robot.mouseMove(1318, 322); 
         robot.keyPress(pass1); 
         robot.keyPress(pass2); 
         robot.keyPress(pass3); 
         robot.keyPress(pass4); 
         } catch (AWTException e) {e.printStackTrace();} 

当我运行程序时,我得到这个错误(记住,我只得到这个错误时代码的一部分用 “PASS1,PASS2 ...等。” 是在它):

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid key code 
at java.awt.Robot.checkKeycodeArgument(Unknown Source) 
at java.awt.Robot.keyPress(Unknown Source) 
at Cracker$2.mouseReleased(Cracker.java:117) 
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source) 
at java.awt.Component.processMouseEvent(Unknown Source) 
at javax.swing.JComponent.processMouseEvent(Unknown Source) 
at java.awt.Component.processEvent(Unknown Source) 
at java.awt.Container.processEvent(Unknown Source) 
at java.awt.Component.dispatchEventImpl(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
at java.awt.Container.dispatchEventImpl(Unknown Source) 
at java.awt.Window.dispatchEventImpl(Unknown Source) 
at java.awt.Component.dispatchEvent(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$000(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.awt.EventQueue$3.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.awt.EventQueue$4.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 
+0

如果PASS1-PASS4是炭灰,不应该'他们是pass1 ='0'等? – Solace

+0

'0'是一个有效的值吗?因为那就是你传给每个keyPress(传递#)的东西' – aliteralmind

+0

@solace整数0可以转换为char。这仍然不一定使它们成为机器人方法的有效参数值。 –

回答

1

Robot#keyPress期望一个int,其表示如在java.awt.KeyEvent

具体描述的虚拟键码,键0表示KeyEvent.VK_UNDEFINED这是一个“无效的键码”

不要忘了,直到你调用keyRelease,按键将继续压制,产生重复键按下事件......

+0

你有解决这个问题的简单方法吗?到目前为止,我想不出一个。 –

+0

问题是,为什么要向'keyPress'方法发送'0',你希望实现什么? – MadProgrammer

+0

我试图使KeyPress方法类型为“0”或“1” –