Java 发送本机事件

Java 发送本机事件,java,windows,swing,events,Java,Windows,Swing,Events,我正在尝试将本机MouseEvents和KeyEvents发送到java应用程序 我已经知道了如何在AWT中执行此操作,如下所示: KeyEvent k = new KeyEvent(j, KeyEvent.KEY_TYPED, 1, 0, KeyEvent.VK_UNDEFINED, 'k'); j.requestFocus(); java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(k); 其中j是组件 但

我正在尝试将本机MouseEvents和KeyEvents发送到java应用程序

我已经知道了如何在AWT中执行此操作,如下所示:

KeyEvent k = new KeyEvent(j, KeyEvent.KEY_TYPED, 1, 0, KeyEvent.VK_UNDEFINED, 'k');
j.requestFocus();
java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(k);
其中j是组件

但问题是,这只适用于Java/AWT组件。我试图在DJ原生浏览器中模拟鼠标按下或按键,但在这里不起作用,可能是因为此浏览器不使用AWT。有没有一种方法可以在不影响实际键盘和鼠标的情况下将本机windows事件发送到应用程序?显然,
awt.Robot
是显而易见的答案,但它确实会影响windows鼠标和键盘

如果方法取决于操作系统,则可以。只要它在windows 64位上工作,就没有问题

另一种可能是运行在AWT上的JavaSwing浏览器,但除了DJNative之外,我还没有找到一种运行在AWT上的工作的、最新的浏览器,更不用说运行在AWT上的了

建议


谢谢

不幸的是,你仍然站在错误的一边。也就是说,SystemEventQueue是一个基于Java的事件队列,用于从操作系统获取系统事件并将其转换为Java事件。您可能需要研究JNI/JNA解决方案,以便将新事件注入操作系统级事件队列。与此相关的问题有很多(例如,需要目标窗口的窗口句柄),但这可能是您剩下的最佳选择…@MadProgrammer,也许我应该尝试找到AWT浏览器?在标准的swing组件中,上述代码运行良好,我可以很好地模拟按键和鼠标动作。我不知道有任何标准组件符合现代WebKit实现的要求。我对WebKit进行了一些研究,大多数现代浏览器都是基于这些组件构建的。看一看,也许,但它似乎是dated@Nathan当前位置请看一看,这可能对您的工作有一定的重要性:-)