从浏览器中的小程序使用JNativeHook
Using JNativeHook from an applet in browser
我正试图从浏览器小程序中使用JNativeHook来获取某个键盘事件。我有一些奇怪的行为,似乎不起作用。这是我迄今为止的代码:
import java.awt.*;
import java.applet.Applet;
import netscape.javascript.*;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;
public class Test extends Applet implements NativeKeyListener {
JSObject window;
public void nativeKeyPressed(NativeKeyEvent e) {
window.eval("console.log('"+NativeKeyEvent.getKeyText(e.getKeyCode()) + "');");
}
public void nativeKeyReleased(NativeKeyEvent e) {
}
public void nativeKeyTyped(NativeKeyEvent e) {
}
public void init() {
window = JSObject.getWindow(this);
window.eval("console.log('test');");
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
window.eval("console.log('There was a problem registering the native hook.');");
window.eval("console.log('"+ex.getMessage()+"');");
System.exit(1);
}
//Construct the example object and initialze native hook.
GlobalScreen.getInstance().addNativeKeyListener(this);
}
}
理想情况下,我希望能够在全局按下某个键后回调到javascript函数中。我读过一些关于权限和签名的内容,但我不确定这是否会导致localhost测试出现问题(我必须点击警告)。
我也不是100%了解JNativeHook的内部运作。我很想使用JNI为每个平台编写一个小DLL,但我想先检查一下是否遗漏了一些基本的东西。
可以从JNLP运行本机代码(JNativeHook),但您需要使用有效证书对代码进行签名。如果您想进行一些测试,您可以在没有localhost的情况下从localhost运行。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- keyup事件处理程序更改焦点不适用于快速键入
- 用程序搜索JQuery数据表中的文本
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- ExtJS 5用程序点击actioncolumn gridview
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 如何从Java/scala调用js美化程序
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 在Web应用程序中使用Highcharts javascript
- 递归使用 eval() 是检查程序执行的好方法吗?
- angularjs+rails应用程序中未显示模板
- 从浏览器中的小程序使用JNativeHook