Java:mousePress()并不总是有效

时间:2016-01-20 20:22:38

标签: java awt

我在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等)正常工作,除了安装程序。

我必须按下的按钮是这样的,&#34; Reanudar&#34;: See here

所以在Eclipse中似乎已经完成了操作(它每次都会打印一条消息),但它只是不起作用。

请帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

  1. 按下和释放之间的延迟。添加一点延迟,我想它可能会更好地工作。
  2. 应用程序本身具有阻止此类输入的功能。这在较大的应用程序中尤其常见(特别是完全拒绝使用机器人/宏的事物)。我怀疑这是问题,但根据应用程序可能值得研究。
  3. 我从这里开始,看看你能找到什么。至少添加一些延迟并发布结果以进行更多讨论。

答案 1 :(得分:0)

找到了解决方案! 我的一位朋友成功地指出,由于此安装程序以管理员身份运行,因此非管理员Eclipse程序可能无法单击该安装程序。 所以我以管理员身份运行Eclipse和我的程序并且IT工作了!

感谢我得到的那些答案,希望我能解决别人的相关问题!