0

我正在尝试编写一个程序,用户可以在其中创建单击和按键的脚本,并按顺序执行它们。该程序最重要的功能是能够准确地将点击放在屏幕上的正确坐标上。一年前我用 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

4

1 回答 1

0

为什么你甚至需要外部库。您可以使用 AWT 机器人来移动鼠标并模拟鼠标点击和按键操作。 https://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html

于 2018-08-22T05:42:15.743 回答