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

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

以下两个例子是:

(一)鼠标Hook

importorg.sf.feeling.swt.win32.extension.hook.Hook;

importorg.sf.feeling.swt.win32.extension.hook.data.HookData;

importorg.sf.feeling.swt.win32.extension.hook.data.MouseHookData;

importorg.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;

publicclassHotMouse {

publicstaticvoidmain(String[] args) {

Hook.MOUSE.addListener(newHookEventListener() {

publicvoidacceptHookData(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

} elseif(hookData.getWParam() ==514) {  System.out.println("left button released");// left button released

} elseif(hookData.getWParam() ==516) {  System.out.println("right button pressed");// right button pressed

} elseif(hookData.getWParam() ==517) {  System.out.println("right button");// right button

} elseif(hookData.getWParam() ==519) {  System.out.println("middle button 519");// middle button

} elseif(hookData.getWParam() ==520) {  System.out.println("middle button 520");// middle button

}

}

});

Hook.MOUSE.install();

}

}

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

importorg.sf.feeling.swt.win32.extension.hook.Hook;

importorg.sf.feeling.swt.win32.extension.hook.data.HookData;

importorg.sf.feeling.swt.win32.extension.hook.data.KeyboardHookData;

importorg.sf.feeling.swt.win32.extension.hook.listener.HookEventListener;

publicclassHotKey {

publicstaticvoidmain(finalString[] args) {

Hook.KEYBOARD.addListener(newHookEventListener(){//@Override

publicvoidacceptHookData(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");

}elseif( KHD.getScanCode() ==1){//按下[ESC]結束

System.exit(0);

}

}});

Hook.KEYBOARD.install();  //註冊事件

}

}

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(); //註冊事件

}

}

hook java_Java 实现 Hook 对鼠标键盘监听 - 沐早'S NOTEBOOK - CSDN博客相关推荐

  1. python pynput库 自动按键 鼠标键盘 监听控制插件 可以制作按键精灵

    这是一个跨平台,使用简单的鼠标键盘监听控制库. 安装 环境 mac os + python 3.6 pip install pynput 监听,控制 import time from pynput i ...

  2. python通过鼠标键盘监听自动桌面截图调用百度文字识别工具

    垃圾代码,没有优化,重点是能直接运行,修改也方便 from pynput import mouse,keyboard from collections import deque import thre ...

  3. zipfile java_java 解zip文件(ZipFile) - 蒋剑锋的专栏-java技术 - CSDN博客

    java 解zip文件(ZipFile) 收藏 2.类ZipInputStream读出ZIP文件序列(简单地说就是读出这个ZIP文件压缩了多少文件),而类ZipFile使用内嵌的随机文件访问机制读出其 ...

  4. C#全局键盘监听(Hook)的使用(转载)

    一.为什么需要全局键盘监听? 在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下 ...

  5. C#全局键盘监听(Hook)

    一.为什么需要全局键盘监听? 在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下 ...

  6. flex(入门)之timer的使用,键盘,鼠标的监听

    package {import flash.display.Shape;import flash.display.Sprite;import flash.events.Event;import fla ...

  7. python键盘监听模块大全_python监听、操作键盘鼠标库pynput详细教程

    § 0.0.0 前言 监听.操作鼠标.键盘是实现自动化的捷径,比如我实现自动化签到用到了模拟键盘操作. pynput是监听.操控鼠标和键盘的跨平台第三方python库. 你可以通过pip insnal ...

  8. AWT—鼠标监听,窗口监听,键盘监听

    AWT-鼠标监听,窗口监听,键盘监听 鼠标监听 目的:实现鼠标作画 package com.deng.lesson03; ​ import java.awt.*; import java.awt.ev ...

  9. 一个简单的键盘监听木马dawenxi的制作

    事实上,我最初是没想到这学期的物联网安全课程会以答辩形式作为考核的,更没想到的是老师竟然让我们自己设计一个针对物联网的病毒或者针对物联网的漏洞,还要求不能被查杀.这难度,属实大?_? .可是,我不想挂 ...

最新文章

  1. s-sed替换或者修改文件指定行,同时匹配多个字符串,替换换行符为指定字符
  2. tomcat出现5个using_出现急性心梗,要当心5个并发症,一个都不好惹!
  3. 关于Office中对%20的转义问题,请知道的大侠帮忙一起想想招儿!
  4. 简明python教程 --C++程序员的视角(七):异常
  5. 深潜百米,采用半缆通信技术的Gladius水下无人机能够征服海洋吗?
  6. Python中怎么读写图像
  7. oracle 创建view时,授权给用户
  8. 扩展方法略好于帮助方法
  9. Ubuntu 下PySpark安装
  10. P01:01背包问题(转)
  11. 随机获取一个集合(List, Set,Map)中的元素转
  12. Linux 下 ascii 的查看方式
  13. Java并发编程:Lock(下)
  14. Php ui 3dmax,3dMAX 7-2020 3264位 SP1 sp2更新补丁合集及修复说明
  15. 抖音上热门的7大小技巧
  16. python通过周数得到日期_python中根据时间获取周数,通过周数获取时间
  17. NPM安装依赖包,报错node-gyp rebuild...解决方法
  18. 从铁路订票系统问题看应用监控的作用
  19. 串口服务器远程距离,基于串口服务器的变频器远程控制系统.pdf
  20. 爬取动态网站阿里巴巴(1688)商家公司名称及联系方式

热门文章

  1. 右键菜单无响应_给电脑添加右键菜单重启资源管理器,让电脑不再死机!
  2. php给图片加图片水印,php给图片添加文字或图片水印实现代码
  3. 计算机游戏系统分析,计算机游戏引擎fly3D系统的实现方式及应用技巧
  4. Python的运算符和编码
  5. python设计模式整理
  6. rms c语言 函数,C中任何更快的RMS值计算?
  7. okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...
  8. android 动态让控件超出屏幕_android 动态设置屏幕控件宽高度
  9. python messagebox一定要指定父窗体吗,为什么要使用的MessageBox.show一个所有者窗口?...
  10. 【记忆断层、记忆裂痕】