2016-06-11 3 views
0

그래서 키를 누른 후 키를 누른 다음 입력 한 후 간단한 자바 프로그램을 만들고 싶습니다. `자바에서 로봇 (자동 키 누름)

public static void main(String[] args) { 
    final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 
    scheduler.scheduleAtFixedRate(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       Robot robot = new Robot(); 
       robot.keyPress(KeyEvent.VK_T); 
       robot.keyRelease(KeyEvent.VK_T); 
       robot.keyPress(KeyEvent.VK_KP_UP); 
       robot.keyRelease(KeyEvent.VK_KP_UP); 
       robot.keyPress(KeyEvent.VK_ENTER); 
       robot.keyRelease(KeyEvent.VK_ENTER); 
      }catch (Exception ex) { 
       ex.printStackTrace(); 
      } 
     } 
    }, 3, 3, TimeUnit.SECONDS); 
} 

` 그것은 T를 누르면 그러나 그 후 나는 예외가 ...

java.lang.IllegalArgumentException: Invalid key code 
    at sun.awt.windows.WRobotPeer.keyPress(Native Method) 
    at java.awt.Robot.keyPress(Unknown Source) 
    at Main$1.run(Main.java:21) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

` 어떻게 해결하는 제발 도와주세요 :이 everz 3 내 코드를 secounds repet하면 다음과 같다 그것.

+1

당신은 https://docs.oracle ...'KeyEvent.VK_UP'이 아닌'여기에 상수를 참조 KeyEvent.VK_KP_UP' 원하는 단지 수 .com/javase/7/docs/api/java/awt/event/KeyEvent.html # VK_UP – 3kings

답변

0

Java 은 Windows에서 키패드 바인딩을 지원하지 않습니다.Bug Report

나는 Windows에서 성공하지 못했습니다. 이를 수행하는 유일한 방법은 VK_KP_UP 대신 VK_UP을 사용하는 것입니다. 키패드를 위로 지정할 필요가없는 경우,이 작동합니다

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_T); 
robot.keyRelease(KeyEvent.VK_T); 
robot.keyPress(KeyEvent.VK_UP); 
robot.keyRelease(KeyEvent.VK_UP); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER);