标准的Java键盘事件监听器(KeyListener)和鼠标事件监听器(MouseListener)只能在该Java程序聚焦的时候监听事件。要想让你的Java程序能够在系统后台跟踪全局键盘和鼠标事件,那就需要使用JNI(Java
Native Interface)来创建一个钩子监听操作系统的事件了。本文只讨论,Java程序与Windows操作系统的交互,如果你知道如何实现Java监听Linux事件,请留言,谢谢。开发运行环境:Windows XP SP3, Java 1.6_15, Eclipse 3.5
直接上代码
SysHook.cpp:
SysHook.h:
KeyboardEventListener.java
MouseEventListenter.java
GlobalEventListener.java :
SysHook.java:
Example.java:
C++文件需要用Visual Studio编译为你的目标系统的DLL文件。如果是标准32位Windows XP,可以在这里下载已编译的文件。
在Eclipse创建工程后,需要做的设置是将该DLL所在目录添加到Native library location如图: