收藏 分销(赏)

JAVA创建系统级的热键.doc

上传人:仙人****88 文档编号:11890772 上传时间:2025-08-18 格式:DOC 页数:4 大小:245.50KB 下载积分:10 金币
下载 相关 举报
JAVA创建系统级的热键.doc_第1页
第1页 / 共4页
JAVA创建系统级的热键.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
2015/2/20 创建系统级的热键(JAVA) 所谓系统级热键就是指一组快捷键,不论当前系统焦点在哪个程序中,只要按下该键,程序就能够捕捉该事件并进行相关处理。该功能在应用程序中是非常有用的,比如系统自带的  “win+L”自动锁屏,QQ中默认的“ctrl+alt+Z”自动打开当前的消息窗口等等。  Java中的事件监听机制虽然功能强大,但是当系统焦点脱离该程序时也无能为力。要实现该功能必须调用系统的钩子函数,因此在java中也必须通过jni调用来实现,但是对于不熟悉系统函数或者其他编成语言的朋友来说却是个难题。  以前实现类似的功能都是自己通过c调用系统的钩子函数然后再通过jni调用,自己写的东西只要能满足简单的需求即可,因此功能和程序结构也比较简单。后来在国外的一个网站上发现了一个组件“jintellitype”帮我们封装了绝大部分的功能,而且结构上也采用java中的事件监听机制,我们只要在程序中通过注册即可实现,下面是一个简单的例子: Java代码   1. import com.melloware.jintellitype.HotkeyListener;   2. import com.melloware.jintellitype.JIntellitype;   3.    4. public class HotKey implements HotkeyListener {   5.     static final int KEY_1 = 88;   6.     static final int KEY_2 = 89;   7.     static final int KEY_3 = 90;   8.    9.     /**  10.      * 该方法负责监听注册的系统热键事件  11.      *  12.      * @param key:触发的热键标识  13.      */   14.     public void onHotKey(int key) {   15.         switch (key) {   16.             case KEY_1:   17.                 System.out.println("ctrl+alt+I 按下.........");   18.                 break;   19.             case KEY_2:   20.                 System.out.println("ctrl+alt+O 按下.........");   21.                 break;   22.             case KEY_3:   23.                 System.out.println("系统退出..........");   24.                 destroy();   25.         }   26.    27.     }   28.    29.    30.     /**  31.      * 解除注册并退出  32.      */   33.     void destroy() {   34.         JIntellitype.getInstance().unregisterHotKey(KEY_1);   35.         JIntellitype.getInstance().unregisterHotKey(KEY_2);   36.         JIntellitype.getInstance().unregisterHotKey(KEY_3);   37.         System.exit(0);   38.     }   39.    40.     /**  41.      * 初始化热键并注册监听事件  42.      */   43.     void initHotkey() {   44.         //参数KEY_1表示改组热键组合的标识,第二个参数表示组合键,如果没有则为0,该热键对应ctrl+alt+I   45.         JIntellitype.getInstance().registerHotKey(KEY_1, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,   46.                 (int) 'I');   47.         JIntellitype.getInstance().registerHotKey(KEY_2, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,   48.                 (int) 'O');   49.         JIntellitype.getInstance().registerHotKey(KEY_3, JIntellitype.MOD_CONTROL + JIntellitype.MOD_ALT,   50.                 (int) 'X');   51.    52.         JIntellitype.getInstance().addHotKeyListener(this);   53.     }   54.    55.     public static void main(String[] args) {   56.         HotKey key = new HotKey();   57.         key.initHotkey();   58.    59.         //下面模拟长时间执行的任务   60.         while (true) {   61.             try {   62.                 Thread.sleep(10000);   63.             } catch (Exception ex) {   64.                 break;   65.             }   66.         }   67.     }   68. }   附件一:解压jintellitype.rar后会得到jintellitype-1.3.1.jar的包和一个jintellitype.dll的动态链接库文件(32位)。64位用JIntellitype64.dll。 在myeclipse的工程中新建文件夹lib,将jintellitype-1.3.1.jar复制进去。 右击jintellitype-1.3.1.jar,选择Build Path 的Add to Path。 这时候可能编译时还会报错, 这是因为没有这个包: 附件二:解压commons-logging-1.2-bin.zip 并安上述方法导入commons-logging-1.2.jar包。 然后编译会发现这样的错误 这是因为还没有添加之前解压的jintellitype.dll文件, 这里将jintellitype.dll这个文件复制到jdk安装目录下的jar中的bin文件夹中如:D:\jdk7_azh\jre\bin。这不是一个长久之计。 到此就能全部运行了。。。。。。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服