2016-01-11 102 views
2

從我的Java應用程序,我嘗試着重於Windows中的另一個打開的應用程序,然後發送一些KeyEvent。 一切工作正常,直到第二個窗口打開(由於我發送的KeyEvents,是正常的預期行爲)在提到的應用程序。當第二個窗口打開時,我的代碼中的下一個KeyEvents不再執行。任何幫助?java專注於其他應用程序

import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import java.io.IOException; 

public class RobotANB { 

    public static void main(String[] args) throws AWTException, IOException { 

     Runtime.getRuntime().exec("[path to EXE]"); 

     Robot robot = new Robot(); 

     robot.delay(20); 

     robot.keyPress(KeyEvent.VK_CONTROL); 
     robot.delay(20); 
     robot.keyPress(KeyEvent.VK_N); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_N); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_CONTROL); 
     robot.delay(20); 

     robot.keyPress(KeyEvent.VK_ALT); 
     robot.delay(20); 
     robot.keyPress(KeyEvent.VK_D); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_D); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_ALT); 
     robot.delay(20); 

     // S 
     robot.keyPress(KeyEvent.VK_S); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_S); 
     robot.delay(20); 

     // Second window in other application opens here 
     // Code below no longer executed and should be 
     // executed in the second window 

     robot.keyPress(KeyEvent.VK_TAB); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_TAB); 
     robot.delay(20); 

     robot.keyPress(KeyEvent.VK_TAB); 
     robot.delay(20); 
     robot.keyRelease(KeyEvent.VK_TAB); 
     robot.delay(20);    

    } 
} 

回答

0

加入1000的延遲解決問題

... 
// S 
robot.keyPress(KeyEvent.VK_S); 
robot.delay(20); 
robot.keyRelease(KeyEvent.VK_S); 
robot.delay(1000); 

// Second window in other application opens here 
// Code below no longer executed and should be 
// executed in the second window 

robot.keyPress(KeyEvent.VK_TAB); 
robot.delay(20); 
robot.keyRelease(KeyEvent.VK_TAB); 
robot.delay(20); 
...