Java.awt.robot mousepress 没有任何效果

Posted

技术标签:

【中文标题】Java.awt.robot mousepress 没有任何效果【英文标题】:Java.awt.robot mousepress is not having any effect 【发布时间】:2013-10-10 17:27:07 【问题描述】:

我正在尝试使用 awt.robot 在不同的程序中模拟左键单击,代码如下:

int mask = InputEvent.BUTTON1_DOWN_MASK;
bot.mouseMove(x, y);   
bot.mousePress(mask);
bot.mouseRelease(mask);

当这将鼠标移动到屏幕的正确部分时,其他程序似乎没有收到点击。我做错了什么?

在某些其他程序中,同样的方法会产生点击,但在一个程序中,它没有效果。

我尝试Thread.sleep() 在 mouseMove 和 mousePress 之间等待 30-300 毫秒,但没有效果。

我是否需要使用 JNI 和原生 windows API 来实现这一点?我在 Windows 8 上。

【问题讨论】:

1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2) “我已经尝试过Thread.sleep() 改为尝试delay(int),或setAutoWaitForIdle(boolean)/waitForIdle() 【参考方案1】:

您使用了错误的掩码:InputEvent.BUTTON1_MASK

【讨论】:

试过了,也没效果。 只有在一个特定的程序中没有收到点击,在另一个程序中相同的方法正在工作。鼠标正在移动,但点击无效。 好吧,那么我猜操作系统中存在一些冲突或不兼容的东西。我认为您在代码中没有做错任何事情。但是,请确保其他应用程序具有焦点。也许这是问题的一部分。要强制聚焦,您可以尝试单击两次。但是,请注意:单击两次可能会在应用程序中执行两个操作。 谢谢,也试过点击两次,但也没有效果。我在 Windows 8 上。 我没有灵感了。对不起:)【参考方案2】:

您是否在bot.mousePressed(mask)bot.mouseReleased(mask) 之间尝试过bot.delay(n)

【讨论】:

以上是关于Java.awt.robot mousepress 没有任何效果的主要内容,如果未能解决你的问题,请参考以下文章

使用 java.awt.Robot 模拟退格键

Java AWT Robot - 如何读取项目文本/标签?

除了使用 java.awt Robot 类之外,如何在 Selenium/Java 中退出全屏(Chrome)?

从 GUI 读取数据

Java里鲜为人知的“机器人”类库

如何保存屏幕截图(matlab)