我正在尝试编写一个程序,用户可以在其中创建单击和按键的脚本,并按顺序执行它们。该程序最重要的功能是能够准确地将点击放在屏幕上的正确坐标上。一年前我用 C# 制作了这个程序,但现在我在 JavaFX 中重试它,让它更漂亮。我将 JNativeHook 用于键侦听器和鼠标侦听器。
这是我面临的问题:运行robot.mouseMove() 时,光标被发送到屏幕上完全随机的位置。我通过在 NativeMouseListener mousePressed 函数内部和带有机器人的类内部输出光标的当前位置来验证这一点。为了在 NativeMouseLIsener 中获取鼠标位置,我使用了 NativeMouseEvents getX 和 getY 函数,它们是完全准确的。然后对于其他输出,我使用的是具有不同结果的 PointerInfo.getPointerInfo()。当显示 DPI 缩放设置为 100% 时,PointerInfo 完全不准确。这似乎有点荒谬。机器人正在向鼠标发送一个随机位置,而 PointerInfo 甚至无法正确读取该位置。如果我将显示缩放设置为 125%,那么 PointerInfo 将在屏幕上获得与 NativeMouesListener 相同的位置,
是否有任何替代方案或外部库可以用来模拟鼠标点击?令人难以置信的是,像机器人这样功能失调的东西是我们唯一必须完成的事情。
这是一个视频,进一步解释了我的问题: https ://www.youtube.com/watch?v=BerTofDwRUw