java - 为什么当窗口切换时java程序不继续执行操作?

标签 java

我正在开发一个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/

相关文章:

java - NetBeans7.2 中 ArrayList 的问题

java - Java Swing JScrollBar 何时更新其大小?

java - netscape.javascript.JSException : SyntaxError: Unexpected keyword 'this' . 预计 ')' 结束参数列表

java - 对文本文件Java进行数学计算的性能

java - lombok 生成器使用 hibernate 列表创建问题

java - 添加更新、删除、插入按钮来运行 jtable 数据

java - RecylerView 及其项目的 OnTouchEvent

java - JAI 关闭文件句柄是否为时过早?

java - 从蓝牙接收到的 Android JAVA 代码中的字符串缓冲区读取数据

java - Gson反序列化返回一个包含null的Object