我正在开发一个Java程序,其中打开一个新的外部程序,然后将鼠标移动到一个位置,然后执行一些键盘操作。我用机器人执行所有这些操作,但我注意到,打开外部程序后这些操作将不起作用。您知道如何解决这个问题吗?
Robot robot = new Robot();
robot.mouseMove(400, 50);
Process process = new ProcessBuilder("PATH/TO/PROGRAM.exe").start();
copy(TEXT Which IS COPIED TO CLIPBOARD);
Thread.sleep(7000);
robot.mousePress(InputEvent.BUTTON1_DOWN);
robot.mouseRelease(InputEvent.BUTTON1_DOWN);
copy() 是将字符串复制到剪贴板的方法
最佳答案
执行PROGRAM.exe后,框架焦点似乎会发生变化,因此操作不会影响程序。 在对 PROGRAM.exe 框架创建任何操作之前,您需要获得焦点。
尝试以下操作:
Robot robot = new Robot();
robot.mouseMove(400, 50);
Process process = new ProcessBuilder("PATH/TO/PROGRAM.exe").start();
//Gaining Focus using Alt+Tab Keys
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_TAB);
robot.delay(10);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_TAB);
// Continuing the rest of program
Thread.sleep(7000);
robot.mousePress(InputEvent.BUTTON1_DOWN);
robot.mouseRelease(InputEvent.BUTTON1_DOWN);
关于java - 为什么当窗口切换时java程序不继续执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37907760/