我使用 java.awt.Robot 在我的电脑上执行一些鼠标行为。代码很简单,如下所示:
import java.awt.Robot;
import java.awt.event.InputEvent;
public class RobotProxy {
public static void main(String[] args) {
// TODO Auto-generated method stub
RobotProxy robotProxy = new RobotProxy();
try {
robotProxy.foo();
} catch (Exception e) {
// TODO: handle exception
System.out.println("Exception there...");
}
}
public void foo() throws Exception{
Thread.sleep(3000);
Robot robot = new Robot();
robot.mouseMove(501, 296);
leftClick(robot);
robot.mouseMove(505, 296);
leftClick(robot);
robot.mouseMove(509, 296);
leftClick(robot);
}
public void leftClick(Robot robot) throws Exception{
Thread.sleep(1000);
System.out.println("before Click...");
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
System.out.println("after Click...");
}
}
您可以发现我使用java.awt.Robot.mousePress(InputEvent.Button1_MASK)
和java.awt.Robot.mouseRelease(InputEvent.Button1_MASK)
的组合来执行鼠标左键单击行为。
它在大多数时候都能正常工作但有时会失败。例如,某种软件复选框的左键单击行为将失败。我可以确保将click命令发送到 java.awt.Robot ,但没有任何反应。更令人难以置信的是, java.awt.Robot.mouseMove(int x,int y)仍然适用于那种情况。
PC的操作系统是Windows8.1
该软件不是市场上可用的,它只是由cpp编写的Windows本机应用程序。可以单击软件上的按钮,但不能单击复选框。
如果情况让你感到困惑,请告诉我java.awt.Robot何时无法点击。感谢您的帮助。
答案 0 :(得分:0)
问题在于robot.mousePress
和robot.mouseRelease
命令之间没有延迟。
以下是您可以在两者之间添加解决问题的示例
Thread.sleep(100);
延迟100毫秒。大约可以听到的速度,单击单击