Java: mousePress() 并不总是有效

Java: mousePress() does not always work

我在 Java 中制作了一个简单的实用程序,它可以让鼠标在任何地方点击,每 X 毫秒一次:

import java.awt.Robot;
import java.awt.event.InputEvent;

public class Main 
{
    public static final int SLEEP_TIME = 60000;

    public static void main(String[] args)
    {
        try
        {
            Robot r = new Robot();
            int i = 0;
            while(true)
            {
                doNothing();
                System.out.println(++i + ") Pressed");
                r.mousePress(InputEvent.BUTTON1_DOWN_MASK);
                r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            }
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    private static void doNothing() 
    {
        long endTime = System.currentTimeMillis() + SLEEP_TIME;
        while(System.currentTimeMillis() < endTime)
        {
            //Do nothing
        }
    }
}

我成功了,因为由于外部原因,安装程序中有一个按钮,我必须每隔 X 分钟按一次,因为它出现故障。

所以这个小程序在任何地方(桌面、Chrome 等)都能正常工作,除了安装程序。

我要按的按钮是这样的,"Reanudar": See here

因此在 Eclipse 中似乎操作已完成(它每次都打印一条消息)但它就是不起作用。

有什么帮助吗?提前致谢。

我在使用这些方法时遇到的两个主要问题如下:

  1. 按下和释放之间的延迟。添加一个轻微的延迟,我想它可能会工作得更好。
  2. 应用程序本身有一些东西可以阻止这种类型的输入。这在大型应用程序中尤其常见(尤其是那些完全拒绝使用 bots/macros 的应用程序)。我怀疑这是问题所在,但根据应用程序可能值得研究。

我将从这里开始,看看您能找到什么。至少添加一些延迟和 post 更多讨论的结果。

找到解决方案! 我的一个朋友成功地指出,由于这个安装程序是 运行 管理员,它可能无法被 non-Administrator Eclipse 程序点击。 所以 我 运行 Eclipse 和我的程序作为管理员 并且它成功了!

感谢我得到的这两个答案,希望我的答案能解决其他人的相关问题!