博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 实现 Hook 对鼠标键盘监听
阅读量:6799 次
发布时间:2019-06-26

本文共 2451 字,大约阅读时间需要 8 分钟。

hot3.png

Java 实现全局(全操作系统)的鼠标和键盘监控,使用的是SWT Win32 Extension 项目,在以前若使用Java恐怕是很难实现的!

SWT Win32 Extension 让Java拥有了许多对操作系统底层操作的功能!

 

注:本程序需要SWT Win32 Extension支持?

 

以下两个例子是:

 

(一)鼠标Hook

 

 

import org.sf.feeling.swt.win32.extension.hook.Hook;import org.sf.feeling.swt.win32.extension.hook.data.HookData;import org.sf.feeling.swt.win32.extension.hook.data.MouseHookData;import org.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;  public class HotMouse {  public static void main(String[] args) {  Hook.MOUSE.addListener(new HookEventListener() {   public void acceptHookData(HookData hookData) {    if (hookData != null) {      //System.out.println("Mouse Point X = " + ((MouseHookData)hookData).getPointX());      //System.err.println("Mouse Point Y =" + ((MouseHookData)hookData).getPointY());    	System.err.println(((MouseHookData)hookData).getPointX()+"," + ((MouseHookData)hookData).getPointY());    }    if (hookData.getWParam() == 513) {         System.out.println("left button pressed");// left button pressed    } else if (hookData.getWParam() == 514) {  System.out.println("left button released");// left button released    } else if (hookData.getWParam() == 516) {  System.out.println("right button pressed");// right button pressed    } else if (hookData.getWParam() == 517) {  System.out.println("right button");// right button    } else if (hookData.getWParam() == 519) {  System.out.println("middle button 519");// middle button    } else if (hookData.getWParam() == 520) {  System.out.println("middle button 520");// middle button    }   }  });  Hook.MOUSE.install(); } }

 

(二)键盘Hook

import org.sf.feeling.swt.win32.extension.hook.Hook;import org.sf.feeling.swt.win32.extension.hook.data.HookData;import org.sf.feeling.swt.win32.extension.hook.data.KeyboardHookData;import org.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;  public class HotKey { public static void main(final String[] args) {  Hook.KEYBOARD.addListener(new HookEventListener(){//@Override  public void acceptHookData(HookData arg0) {   KeyboardHookData KHD = ((KeyboardHookData)arg0);   System.out.println(KHD.getWParam()+" - "+KHD.getTransitionState());  //Print code    if( KHD.getScanCode() == 29 && KHD.getTransitionState()){  //按下Ctrl執行動作    System.out.println("Hotting");   }else if( KHD.getScanCode() == 1 ){  //按下[ESC]結束    System.exit(0);   }  }});  Hook.KEYBOARD.install();  //註冊事件 }}

 

以上两个例子源于: 这里要感谢!感谢!

转载于:https://my.oschina.net/crooner/blog/655971

你可能感兴趣的文章
在PPT中插入FLASH遇到的系列问题
查看>>
2015百度之星 下棋
查看>>
常用的CMD命令
查看>>
搭建网站必不可少的知识11
查看>>
python下的MySQLdb使用
查看>>
CCNP路由实验---4、配置EIGRP不等价均衡
查看>>
Fedora20下安装vim
查看>>
CentOS 6.5 使用docker 容器
查看>>
pl/sql中的exception
查看>>
Android开发:通过AdbWireless,不用数据线连接到安卓手机进行调试
查看>>
组策略对应于注册表位置汇总
查看>>
Java虚拟机参数配置
查看>>
RHCE 学习笔记(31) - 防火墙 (中)
查看>>
XSS研究4-来自外部的XSS攻击的防范
查看>>
Spring知识点总结-1
查看>>
微软私有云分享(R2)21 BMC提升B格
查看>>
MDSF:如何使用GMF来做TOGAF建模工具
查看>>
Spring Security简介
查看>>
打造一流的研发中心
查看>>
MCollective架构篇3-Puppet插件的部署及测试
查看>>