Java - 将鼠标事件发送到Applet

时间:2014-03-03 20:42:46

标签: java swing applet

我正在尝试创建一个可以将鼠标输入发送到Runescape applet的程序。在你问我想要什么之前,它不是机器人。我正在为Runescape制作一个“Twitch Plays Pokemon”节目,该节目已被确认为允许使用。

无论如何,我已经创建了一个加载器,它将从网站上拉出游戏jar并在JFrame中打开它,这意味着我有一个包含游戏的Applet实例。我需要以某种方式将鼠标事件发送到此applet。我到处寻找,但每当我搜索到这个,我只会找到关于听鼠标点击而不是发送它们的页面......

我应该注意到Robot类不是我想要的;鼠标操作必须是虚拟的并在应用程序中运行。我知道这是可能的,但我很难知道它是如何完成的。

我怎样才能做到这一点?我希望能够发送鼠标悬停事件以及右/左击事件。

3 个答案:

答案 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,然后使用SendMessagePostMessage发送模拟鼠标事件。

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