问题:
Java Robot 的 MousePress() 在 99% 的情况下都可以正常工作,但它不能在 Windows 8.1 或 10 的任务管理器上工作(我没有测试过 7 或更低版本)。
As a matter of fact, when the Task Manager window is selected, even MouseMove() will fail.
要复制:
- 使用下面的代码,运行一次以查看代码是否有效。
- 打开任务管理器(CTRL+Shift+Escape),运行代码,然后快速选择任务管理器窗口。代码将完成执行,但鼠标位置不会改变。
代码:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.MouseEvent;
public class RobotMousePressTest {
public static void main(String[] args) throws AWTException, InterruptedException {
System.out.println("Started. Waiting for sleep to finish.");
Robot r = new Robot();
Thread.sleep(3000);
r.mouseMove(4, 4);
r.mousePress(MouseEvent.getMaskForButton(MouseEvent.BUTTON1));
System.out.println("Click!");
}
}
问题:
- 有谁知道是否有办法让它工作?
- 是否有可用于 MousePress() 和 MouseMove() 的替代库?
- 我会被迫使用本机代码 (JNI) 以使其正常工作吗?