# GlobalHotKey.dll(全局热键插件) - Rainmeter插件与测试 - 雨滴社区 - Powered by Discuz!
 找回密码
 点击注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 12725|回复: 48

[插件与脚本] GlobalHotKey.dll(全局热键插件)

  [复制链接]

签到天数: 82 天

[LV.6]常住居民II

发表于 2013-11-30 02:29:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?点击注册

x
  • 作者的话
关于插件的作用及详细使用说明还有示例皮肤我会帖子里一一说明,希望大家能耐心看完。

  • 插件功能:
实现在任意窗口焦点中,按下插件中设置的快捷键,雨滴皮肤响应。适合全屏程序的时候切歌、复杂工作的时候弹出隐藏的dock等快捷操作

  • 插件下载:
GlobalHotKey.bin.rar (69.25 KB, 下载次数: 80)

  • 示例皮肤
BubbleDock for test_.rmskin (128.7 KB, 下载次数: 57)

  • 使用文档:

  • 什么是Hotkey?
Hotkey即热键,或常说的快捷键,一组热键就是可以用来处理某个特定任务的一或多个按键的组合。例如你现在正在看的文本内容,用鼠标拖选一下然后Ctrl+C就可以把选定的文本内容复制到系统粘贴板里了。通常情况下使用某个程序热键的前提是获得该程序的窗口焦点,如果你在浏览器里选中了这一行文本,然后把浏览器最小化回到桌面或者切换到其它程序的窗口,再按Ctrl+C也不能达到“复制浏览器里选中的这行文本”的目的,就是因为此时你失去了浏览器程序窗口的焦点。Rainmeter的一个皮肤其实也是一个窗口,你别看它不像我们普通的程序窗口有边框有标题栏有菜单栏什么的,它只是把这些都隐藏了,只使用绘图区来画出我们想要的皮肤。说起来大多数人会把这些皮肤窗口放在桌面上吧(最底层的窗口,总是会被其他窗口遮挡),也就是说平时使用的时候很难获取到皮肤的窗口焦点。就算我给它注册了热键,每次都要回桌面去点一次皮肤获得焦点,然后才能用热键,那还不如不用呢。为了方便使用我们在这个插件里使用的是全局热键,给一个窗口成功地注册了全局热键之后,就算不在这个窗口的焦点上,也可以使这个窗口响应这组热键了。一个常用的应用场景是:我正在用酷狗音乐听歌,同时开着全屏游戏在玩,想切歌的时候切换回去点下一曲再切回来接着玩游戏嫌麻烦,就可以注册一下全局热键(记得默认好像是Ctrl+Alt+右),在全屏游戏里就能直接按这个切下一曲了。

  • 我可以用哪些键?
一组热键可以由多个修饰键(Modifiers)和一个普通键组合而成,可选的修饰键有四种:Ctrl,Alt,Shift和Windows(印着Windows徽标的那个),每种键在键盘上可能有多个,比如左Ctrl右Ctrl,它们作为修饰键时是等效的。也可以不指定修饰键,以下的三组热键都是合法的:Ctrl+A,Win+Alt+1,F3。关于可用的普通键的详细内容见附表。

  • 触发
如果有修饰键先按住修饰键,然后按一下定义的那个普通键,按下的时候触发。按住不放的话会连续触发(触发速率取决于键盘的一些相关设置),直到松开。

  • 副作用
没错,全局热键是有副作用的,那就是,一个热键组合一旦被一个程序注册了,其他程序就不能再注册(全局热键冲突),直到前者反注册了这个组合为止。更严重的是,这组键本身在其他任何程序中也将会失去原来的作用,例如你把Ctrl+C注册为全局热键用来打开控制面板什么的,那么在记事本中或者浏览器中你都无法再用Ctrl+C来复制东西了。
因此作者这里提几条建议:
  • 永远不要使用没有修饰键的全局热键,如果你注册F1为全局热键,那么F1原本在其他各个程序中的功能都会被屏蔽,但是如果你注册的是Ctrl+F1,却对F1本身单独使用的时候没有任何影响;
  • 不要注册那些约定俗成,经常被其他程序用到的热键组合,Ctrl+C,Ctrl+V这类,如果一定要用,试试Ctrl+Alt+C吧,虽然按起来比较麻烦;
  • 其实Win+某个键是一个很好的选择,Windows本身已经注册了不少这类全局热键,例如Win+D显示桌面,Win+E打开资源浏览器,但是还有很多的键没有注册呢,自己慢慢发掘下。

  • 使用语法示例:
  1. ; 开始和其他插件都一样的
  2. [<Name>]
  3. Measure=Plugin
  4. Plugin=GlobalHotKey.dll
  5. ; 选择修饰键(可选)
  6. Ctrl=0        ; 不使用的可以不写,默认就是0
  7. Alt=0        ; 不使用的可以不写,默认就是0
  8. Shift=0        ; 不使用的可以不写,默认就是0
  9. Win=1        ; 设置为1表示要使用到
  10. ; 选择主键,必须设置,否则在Rainmeter日志中输出错误信息
  11. Key=Escape
  12. ; 绑定动作(可选——可是不设置这个你前面写那么多又有何用!)
  13. Command=[!HideMeter <SomeMeter>][!Redraw]
复制代码
  • 附加功能:DoubleStrike
在上面的Plugin中加一行“DoubleStrike=某个正整数”就可以把这组热键设置为DoubleStrike模式,意思是双击这组热键才能触发动作,正整数表示判断为双击的参考时间间隙,单位是毫秒(1秒=1000毫秒),推荐设置为300-500,连续两次触发该组热键间隙不大于这个值时触发动作。设置为小于或等于0值表示关闭此模式。这个功能现在看起来可能略有些鸡肋,有兴趣的同学往下看,经过是这样的:最初写这个是想看看能不能实现那个大数字的双Ctrl弹出搜索框功能的。然后写着写着其他功能都实现了,最后却发现这个双Ctrl用全局热键是无法实现的。
  • 热键必须设定一个主键,而且这个主键本身不能是修饰键,Ctrl是修饰键,不可行;
  • 替代方案,不要用修饰键,设置成双击F1或者双击Enter什么的来弹出搜索框——这个是可以做到,但是前面也说了弊端,建议还是不要用了,除非你发现键盘上有个什么键你从来也不会用——于是,这个插件的这个蛋疼的功能……你们想玩玩练练手速什么的就拿去玩吧,设置DoubleStrike=50试试 :)
那么有没有办法实现双Ctrl(或者双击任意键)触发,而且不影响该键的正常功能呢?答案是肯定的。(猜测)大数字本身用的是一种叫全局键盘钩子的技术。这种东西很扯淡,我们做个比喻,如果你是一个想要收到热键消息的应用程序,而用户的键盘输入是你一个远方的亲友的话,前面我用的注册全局热键的方法相等于是打电话告诉对方你的地址,让对方常常给你写信说说最近发生在身边的八卦什么的;而后者则是在邮局安插好眼线,偷偷把对方发出的每一封信件都先拦截下来,拆开看看有没有你感兴趣的内容,然后再接着发出去。
这种做法会造成两个问题:
  • 安全问题,很多黑客盗取用户密码就是用的这个技术,我如果写一个插件干这事的话应该会被大多数杀毒软件拦截下来,而大数字本身……哼哼;
  • 安装了钩子之后相等于要对任何的输入信息多做一次预处理,可能会使系统性能下降。
总之,有点鄙视这种方法,不过等有时间还是写一个用这种方法来实现的版本来玩玩……如果你相信我就算偷偷拆你信件看到了一些奇怪的东西也不会到处去乱说的话,那到时来帮我测试测试吧 ^_^

  • 附表
关于可用普通键的说明:我把Windows定义的各种键码过了一遍,去掉对一些本来就有特殊作用的键的支持,另外还有部分不明觉厉的键码不清楚是干嘛用的,也暂时先不支持。

使用字符串 说明
Esc Esc/Escape 可用
功能键F1-F24 F1, F2, etc. 可用
不要吃惊,Windows定义的功能键就是这么多,虽然我知道你键盘上没有 :)

主键盘区:
使用字符串 说明
数字键0-90, 1, etc. 可用
字母键A-ZA, B, etc. 可用
制表键Tab/Table 可用
回删键Back/Backspace 可用
回车键Ent/Enter 可用
空格键Space 可用
大小写切换 不可用
快捷菜单键 不可用
修饰键 不可用
其它符号键对应符号 可用
大小写切换:此键用于切换状态,注册为全局热键后造成原来的切换功能失效或混乱
快捷菜单键:就是那个上面画着鼠标和菜单图案的键,按一下相等于鼠标右键点击一下
修饰键:包括前面说的左右Ctrl,Alt,Shift和Windows键等
其它符号键:每个符号键上都有两个不同的符号,这里随便用一个表示都可以哦,比如+和=是同一个键,{和[是同一个键

编辑区:
使用字符串 说明
Home键Home 可用
End键End
可用
插入键Ins/Insert 可用
删除键
Ins/Insert 可用
向上翻页
Page Up/Page-Up 可用
向下翻页 Page Down/Page-Down 可用

方向键:
使用字符串 说明
上下左右 Up, Down, Left, Right 可用

小键盘区(符号已经被主键盘区用得差不多了,这里需要用英文来表示):
使用字符串 说明
Number Lock 不可用
小键盘区0-9 Num0, Num1, etc. 可用
+ Add/Addition 可用
- Sub/Subtract 可用
* Mul/Multiply/* 可用
/ Div/Divide 可用
. Dec/Decimal 可用
小键盘区回车 可用
Number Lock:此键用于切换状态,注册为全局热键后造成原来的切换功能失效或混乱
*:还能用星号哦,这个主键盘区没用掉
小键盘区回车:其实和主键盘区回车完全是等价的

鼠标键:
使用字符串 说明
左键 LButton 添加了支持,虽然注册热键函数没有返回错误,但似乎注册不能生效
右键 RButton 同上
中键 MButton 同上
附加1 XButton1 添加了支持,但未做测试
附加2 XButton2 添加了支持,但未做测试

系统键(一般都有特殊功能,不做支持):
使用字符串 说明
Break/Pause 不可用
Scroll Lock 不可用
Print Screen 不可用
Sleep 不可用

其他键(关联到系统默认的各种媒体设备/应用/功能上去,或者是作用不明,暂时不做支持):
使用字符串

浏览器键(前进/后退/刷新/...)
不可用
各种媒体键 不可用
音量+/-/静音 不可用
其他各种神秘的键码 不可用




评分

参与人数 6心动值 +2 活跃值 +31 技术值 +3 收起 理由
旧心论 + 2 厉害!!已收藏
suixin812 + 5 + 1 辛苦了
devil灬冥羽 + 2 这是个神器
傻大个牌纯碱 + 2 赠一点节操给你哦(^□^*)
语笑嫣然 + 1 + 1 ≧▼≦
萝莉头 + 1 + 20 + 1 向技术组成员致敬

查看全部评分

回复

使用道具 举报

签到天数: 189 天

[LV.7]常住居民III

发表于 2013-11-30 02:51:14 | 显示全部楼层
好想给自己加分呀 o(╯□╰)o  
回复

使用道具 举报

签到天数: 392 天

[LV.9]以坛为家II

发表于 2013-11-30 12:44:27 | 显示全部楼层
我给你加。
回复

使用道具 举报

签到天数: 215 天

[LV.7]常住居民III

发表于 2013-11-30 12:55:06 | 显示全部楼层
这是个神器
回复

使用道具 举报

签到天数: 84 天

[LV.6]常住居民II

发表于 2013-11-30 13:00:09 | 显示全部楼层
神器,绝对的
回复

使用道具 举报

签到天数: 27 天

[LV.4]偶尔看看III

发表于 2013-11-30 18:55:43 | 显示全部楼层
好东西先留着慢慢研究
回复

使用道具 举报

签到天数: 52 天

[LV.5]常住居民I

发表于 2013-12-1 01:14:31 | 显示全部楼层
感谢分享 1024
回复

使用道具 举报

签到天数: 497 天

[LV.9]以坛为家II

发表于 2013-12-1 01:35:48 | 显示全部楼层
厉害  学习下  唉~
回复

使用道具 举报

签到天数: 30 天

[LV.5]常住居民I

发表于 2013-12-1 09:09:13 | 显示全部楼层
大爱,,,
回复

使用道具 举报

签到天数: 1544 天

[LV.Master]伴坛终老

发表于 2013-12-1 22:15:07 | 显示全部楼层
支持支持支持支持支持支持支持

评分

参与人数 1活跃值 -5 违规值 +1 收起 理由
萝莉头 -5 + 1 多篇帖子灌水

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

快速回复 返回顶部 返回列表