java 监听 键盘 全局_java 监听 键盘 全局

java 监听 键盘 全局

2020-12-19

jna test【鼠标 键盘钩子】Java代码packagejna_test;importcom.sun.jna.platform.win32.WinDef.LRESULT;importcom.sun.jna.platform.win32.WinDef.WPARAM;importcom.sun.jna.platform.win32.WinUser.HOOKPROC;interfaceLowLevelMouseProcextendsHOOKPROC{LRESULTcallback(intnCode,WPARAMwParam,MOUSEHOOKSTRUCTlParam);}Java代码packagejna_test;importcom.sun.jna.Structure;importcom.sun.jna.platform.win32.BaseTSD.ULONG_PTR;importcom.sun.jna.platform.win32.WinDef.HWND;importcom.sun.jna.platform.win32.WinUser.POINT;publicclassMOUSEHOOKSTRUCTextendsStructure{publicclassByReferenceextendsMOUSEHOOKSTRUCTimplementsStructure.ByReference{};publicPOINTpt;publicHWNDhwnd;publicintwHitTestCode;publicULONG_PTRdwExtraInfo;}Java代码packagejna_test;importcom.sun.jna.platform.win32.Kernel32;importcom.sun.jna.platform.win32.User32;importcom.sun.jna.platform.win32.WinDef.HMODULE;importcom.sun.jna.platform.win32.WinDef.LRESULT;importcom.sun.jna.platform.win32.WinDef.WPARAM;importcom.sun.jna.platform.win32.WinUser;importcom.sun.jna.platform.win32.WinUser.HHOOK;importcom.sun.jna.platform.win32.WinUser.KBDLLHOOKSTRUCT;importcom.sun.jna.platform.win32.WinUser.LowLevelKeyboardProc;importcom.sun.jna.platform.win32.WinUser.MSG;publicclassMouseLLHook{//鼠标钩子函数里判断按键类型的常数publicstaticfinalintWM_LBUTTONUP=514;publicstaticfinalintWM_LBUTTONDOWN=513;publicstaticfinalintWM_RBUTTONUP=517;publicstaticfinalintWM_RBUTTONDOWN=516;publicstaticfinalintWM_MOUSEHWHEEL=526;publicstaticfinalintWM_MOUSEWHEEL=522;publicstaticfinalintWM_MOUSEMOVE=512;staticHHOOKmouseHHK,keyboardHHK;//鼠标、键盘钩子的句柄staticLowLevelMouseProcmouseHook;//鼠标钩子函数staticLowLevelKeyboardProckeyboardHook;//键盘钩子函数//安装钩子staticvoidsetHook(){HMODULEhMod=Kernel32.INSTANCE.GetModuleHandle(null);mouseHHK=User32.INSTANCE.SetWindowsHookEx(WinUser.WH_MOUSE_LL,mouseHook,hMod,0);keyboardHHK=User32.INSTANCE.SetWindowsHookEx(WinUser.WH_KEYBOARD_LL,keyboardHook,hMod,0);}//卸载钩子staticvoidunhook(){User32.INSTANCE.UnhookWindowsHookEx(keyboardHHK);User32.INSTANCE.UnhookWindowsHookEx(mouseHHK);}publicstaticvoidmain(String[]args){keyboardHook=newLowLevelKeyboardProc(){@Override//该函数参数的意思参考:http://msdn.microsoft.com/en-us/library/windows/desktop/ms644985(v=vs.85).aspxpublicLRESULTcallback(intnCode,WPARAMwParam,KBDLLHOOKSTRUCTlParam){intw=wParam.intValue();//按下alt键时w=.WM_SYSKEYDOWN;按下其他大部分键时w=WinUser.WM_KEYDOWNif(w==WinUser.WM_KEYDOWN||w==WinUser.WM_SYSKEYDOWN)System.out.println("keydown:vkCode="+displayCode(lParam.vkCode));elseif(w==WinUser.WM_KEYUP||w==WinUser.WM_SYSKEYUP)System.out.println("keyup:vkCode="+displayCode(lParam.vkCode));//如果按下"q"退出程序,"q"的vkCode是81if(lParam.vkCode==81){unhook();System.err.println("programterminated.");System.exit(0);}returnUser32.INSTANCE.CallNextHookEx(keyboardHHK,nCode,wParam,lParam.getPointer());}privatechardisplayCode(intvkCode){/*if(vkCode>"a"&&vkCode"A"&&vkCode

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://image95.pinlue.com/image/21.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值