java实现全局键盘监听

java实现全局键盘监听

Java本身是无法对桌面进行全局键盘监听的,无法设置全局快捷键,当焦点从java程序面板失去时,自带的监听器就无法监听了,但是比如一些用java写的截图程序是需要全局快捷键操作的,这里可以使用第三方包JIntellitype来实现全局快捷键注册。

本质上还是调用了dll动态链接库,网上下载jintellitype-1.3.9.jar,JIntellitype.dll,JIntellitype64.dll三个文件,或者文末github自行下载。

接下来演示下如何使用此jar,首先使用eclipse创建一个java项目,目录结构如下


创建一个包名com.melloware.jintellitype,存放两个dll文件,jar包会自行到这里加载dll,创建一个demo类

主要使用方法只有三步:

一,注册快捷键

// 第一步:注册热键,热键标识,组合键(shift),主要热键D
			JIntellitype.getInstance().registerHotKey(GLOBAL_HOT_KEY_1, 0, (int) 'D');
			
		
			JIntellitype.getInstance().registerHotKey(GLOBAL_HOT_KEY_2, JIntellitype.MOD_SHIFT, (int) 'D');
			
			JIntellitype.getInstance().registerHotKey(GLOBAL_HOT_KEY_3,
					JIntellitype.MOD_SHIFT + JIntellitype.MOD_CONTROL, (int) 'D');

第一个参数是热键的标识,int类型,第二个参数是控制键等,如shift,ctrl等,也是int,第三个是ABCDE....等字母,第二个参数为0则表示不需要控制键。

二,监听热键事件

// 添加热键监听器
		// 第二步:添加热键监听器
		JIntellitype.getInstance().addHotKeyListener(new HotkeyListener() {
			public void onHotKey(int markCode) {
				switch (markCode) {
				case GLOBAL_HOT_KEY_1:
					JOptionPane.showMessageDialog(null, "注册快捷键(D):跳出弹框!", "提示消息", JOptionPane.WARNING_MESSAGE);
					break;
				case GLOBAL_HOT_KEY_2:
					JOptionPane.showMessageDialog(null, "注册快捷键(Shift+D):跳出弹框!", "提示消息", JOptionPane.WARNING_MESSAGE);
					break;
				case GLOBAL_HOT_KEY_3:
					JOptionPane.showMessageDialog(null, "注册快捷键(Shift+Ctrl+D):跳出弹框!", "提示消息",
							JOptionPane.WARNING_MESSAGE);
					break;
				}
			}
		});

主要是对快捷键触发的事件监听处理,到这基本就可以使用了,如果有时候为了防止热键冲突,使用完需要删除注册,则第三步

三,删除注册的快捷键

扫描二维码关注公众号,回复: 1648689 查看本文章
JIntellitype.getInstance().unregisterHotKey(GLOBAL_HOT_KEY_1);
			
JIntellitype.getInstance().unregisterHotKey(GLOBAL_HOT_KEY_2);
			
JIntellitype.getInstance().unregisterHotKey(GLOBAL_HOT_KEY_3);

直接把标识作为参数调用方法unregisterHotKey(int key)即可

演示如下,先注册快捷键D


注册好之后全部最小化,然后按D键


可以弹出则表明成功,然后删除快捷键


再按D键就没有反应了,表明快捷键取消,欢迎交流学习!

github:https://github.com/ricozhou/createglobalhotkey

猜你喜欢

转载自blog.csdn.net/rico_zhou/article/details/80062914