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 没有任何效果的主要内容,如果未能解决你的问题,请参考以下文章