繁体   English   中英

Java-将鼠标事件发送到Applet

[英]Java - Send mouse events to Applet

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

无论如何,我已经创建了一个加载器,该加载器将从网站上提取游戏罐并在JFrame中打开它,这意味着我有一个包含游戏的Applet实例。 我需要以某种方式将鼠标事件调度到此applet。 我到处都看过,但是每当搜索此内容时,我只会找到有关监听鼠标单击的页面,而不是分派它们。

我应该注意,机器人类不是我想要的; 鼠标操作必须是虚拟的,并且必须在应用程序中运行。 我知道这是可能的,但我一直在努力寻找完成的方法。

我该怎么做? 我希望能够发送鼠标悬停事件以及右键单击事件。

您可能可以使用java.awt.Robot类进行此操作。 我从来没有做过,但似乎可行。

伙计们,我找到了答案。 这很简单。 这是我在小程序上执行鼠标单击的操作:

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)部分,它实际上是针对游戏画布的。

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM