我正在尝试编写一个程序,用户可以在其中创建单击和按键脚本,并按顺序执行它们。该程序最重要的功能是能够将点击准确地放在屏幕上的适当坐标上。我一年前用C#编写了这个程序,但是现在我在JavaFX中重试了它,以使其更漂亮。我正在将JNativeHook用于按键侦听器和鼠标侦听器。
这是我面临的问题: 运行robot.mouseMove()时,会将光标发送到屏幕上完全随机的位置。我通过在NativeMouseListener mousePressed函数内部以及带有机械手的类内部输出光标的当前位置来验证这一点。为了获得鼠标在NativeMouseLIstener中的位置,我正在使用NativeMouseEvents的getX和getY函数,它们是完全准确的。然后对于其他输出,我使用的PointerInfo.getPointerInfo()的结果有所不同。当显示DPI缩放比例设置为100%时,PointerInfo完全不准确。看起来有点荒谬。机械手会向鼠标发送随机位置,而PointerInfo甚至无法正确读取该位置。如果将显示比例设置为125%,则PointerInfo将在屏幕上获得与NativeMouesListener相同的位置,但是机器人问题仍然存在。
我可以使用任何替代方法或外部库来模拟鼠标单击吗?令人难以置信的是,像机器人这样的功能失常是我们要做的唯一事情。
以下是进一步说明我的问题的视频: https://www.youtube.com/watch?v=BerTofDwRUw
答案 0 :(得分:0)
为什么您甚至需要外部库。您可以使用AWT机械手移动鼠标并模拟鼠标单击和按键操作。 https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html