java сосредоточиться на другом приложении

Из моего Java-приложения я пытаюсь сфокусироваться на другом открытом приложении в Windows, а затем отправить несколько KeyEvents. Все работает нормально, пока не откроется второе окно (из-за KeyEvents, которые я отправил, и это нормальное ожидаемое поведение) в упомянутом приложении. Когда открывается это второе окно, следующие KeyEvents в моем коде больше не выполняются. Любая помощь?

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);            

    }
}

person Saltydog693    schedule 11.01.2016    source источник


Ответы (1)


Добавление задержки 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);
...
person Saltydog693    schedule 11.01.2016