我正在尝试创建一个可以将鼠标输入发送到Runescape applet的程序。在你问我想要什么之前,它不是机器人。我正在为Runescape制作一个“Twitch Plays Pokemon”节目,该节目已被确认为允许使用。
无论如何,我已经创建了一个加载器,它将从网站上拉出游戏jar并在JFrame中打开它,这意味着我有一个包含游戏的Applet实例。我需要以某种方式将鼠标事件发送到此applet。我到处寻找,但每当我搜索到这个,我只会找到关于听鼠标点击而不是发送它们的页面......
我应该注意到Robot类不是我想要的;鼠标操作必须是虚拟的并在应用程序中运行。我知道这是可能的,但我很难知道它是如何完成的。
我怎样才能做到这一点?我希望能够发送鼠标悬停事件以及右/左击事件。
答案 0 :(得分:2)
您可以使用java.awt.Robot
课程执行此操作。我从来没有这样做,但似乎它会起作用。
答案 1 :(得分:2)
我找到了答案,伙计们。这很简单。这就是我在applet上执行鼠标点击所做的:
applet.getComponent(0).dispatchEvent(new MouseEvent(applet,
MouseEvent.MOUSE_PRESSED,
System.currentTimeMillis() + 10,
MouseEvent.BUTTON1,
x,y,
0,
false));
applet.getComponent(0).dispatchEvent(new MouseEvent(applet,
MouseEvent.MOUSE_RELEASED,
System.currentTimeMillis() + 10,
MouseEvent.BUTTON1,
x,y,
0,
false));
这里需要注意的是applet.getComponent(0)部分,它实际上是针对游戏画布的。
答案 2 :(得分:0)
您可以使用JNI和Windows API(假设这些都在Windows上运行,其他平台可能有类似的推论)将模拟鼠标事件发送到该窗口。
您可以使用Spy++
来监控发送到该窗口的消息。您可以使用FindWindow
获取窗口hWnd
,然后使用SendMessage
或PostMessage
发送模拟鼠标事件。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950(v=vs.85).aspx