分类:
2008-10-13 16:51:14
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
31 | 3 | 5 | |||||||
9 | 10 | 12 | 13 | ||||||
15 | 16 | 18 | 19 | 20 | |||||
21 | 24 | 26 | 27 | ||||||
28 | 29 | 30 | 31 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
用VC扩展系统的快捷键
声明:本文为喜欢键盘操作的人而写,其它人请不要浪费您宝贵的时间
(转载请注明出处:HateMath的网上田园())
进入正题之前,先来几个小问题:
1.打开“资源管理器”的快捷键是什么?
2.快速将所有窗口最小化(显示桌面)的快捷键是什么?
3.打开“任务管理器“的快捷键是什么?
如果你对这几个问题都不知道(当然,不是你的错:P)而且对使用快捷键也不感兴趣的话,请点击浏览器工具栏的“后退“按钮。
如果你知道其中的一部分甚至全都知道的话,我想你可能是比较喜欢键盘操作的,甚至还是位高手。
不过,你有没有这样的感觉:
系统提供的那几个默认的快捷键好像不够用啊。比如:
我要经常上网查资料,能不能按下Win + S 就打开浏览器并跳转到google / baidu的页面?
我要经常进行文本编辑,能不能用 Win + N 打开NotePad或者Word?
当然作为程序员我用的最多的是VC了,能不能 用 Win + V 打开VC的开发环境?用Win + Y 打开Spy++?用Win + I 自动填充软件序列号? ……
//////////////////////////////打扰了,中间插播广告:LiNing,一切皆有可能。///////////////////////////////
是的,解决的方法肯定是有的,而且不只一种。比较常用的是通过写dll注册键盘钩子(Hook)来监视系统中的键盘事件,一旦用户按下的是预先定义的按键,就执行某些动作。(你也许隐约觉得这个技术可以用来盗取密码什么的。其实技术是无罪的,就怕人心底起邪念,阿弥陀佛,罪过啊罪过。)
所以,今天我们不介绍这种方法,而是采用注册窗体热键的方式来监视系统的键盘事件。
窗体热键是这样一种东西,比如我们给一个窗口注册了热键Win + S(意思是同时按下有windows图标的那个键和S键) ,那么当我们按下组合键 Win + S 的时候,即使这个窗口不是前台窗口(所谓前台窗口,就是目前具有用户输入焦点的那个窗口,通俗的说就是“标题栏比较蓝”的那个窗口),它也会自动跳到前台。
咳,你也许会说,我想要打开google ,自己的窗口跳到前台有什么用呢?其实,实现的办法就在这里:你想,窗口本来是在后台的,当用户按下Win + S 时就跳到前台,这说明窗口接收到了一个通知,一个系统给它的通知,告诉它:有人要你马上出来,于是窗口跳到前台。
那么好,当窗口用默认的方法处理这个系统给的通知之前,我们设法截获这个通知,然后告诉窗体:什么事都没发生,你一边歇着去,这样就阻止了窗口跳到前台。然后分析用户按的什么键,是Win + S的话,就打开浏览器并跳转到google。
这个系统给的通知,就是传说中的WM_HOTKEY消息。
代码实现:
1. 注册热键:
用API函数:RegisterHotKey,很容易使用的,函数参数见MSDN。还是那句老话,MSDN是最好的老师。
需要注意的是,注册热键时最好用 Win 键进行组合,不要用Ctrl、Shift 之类的,那样容易和某些应用程序的快捷键冲突。
2. 截获热键消息:
如果用VB实现的话,可能在截获WM_HOTKEY消息上麻烦些,需要用SetWindowLong定义自己的窗口消息处理例程,如果用的是VC,那就太简单了,在窗口的PreTranslateMessage函数里截获这个消息并处理就行了。
下面贴点VC的代码吧:
附录:
(1) 系统默认的使用Win组合的快捷键(部分常用的)
Win + E 打开资源管理器
Win + R 打开运行 对话框
Win + D 显示桌面
Win + M 显示桌面(和上面的有些区别)
Win + F 打开查找文件对话框
Win + Pause / Break 显示系统属性
Win +L 锁定计算机
顺便说一下答案,弹出任务管理器用 Ctrl + Shift + Esc
(2) 我的程序中扩充的系统快捷键:
Ctrl + Alt + H 显示 / 隐藏 本程序窗口
Win + Q 使前台窗口 半透明 / 不透明(win2000以上系统)
Win + T 使前台窗口 最定层 / 普通窗口
Win + I 自动填充安装序列号(事先要把序列号拷贝到剪贴板)
Win + P 打开 画图 程序
Win + G 打开 注册表编辑器
Win + N 打开记事本
Win + X 打开 Internet浏览器
Win + S 打开 Internet浏览器 并跳转到google
Win + Y 打开Spy ++
Win + V 打开VC++
功能不断扩展中……
> 2005.11.25 修订了一下,加入自动填充序列号和锁定计算机的功能。稍后更新源码链接
热键图示:
程序的使用:
把程序放在启动组里就行了,这样启动时系统会自动加载。程序运行时是隐藏的,必要时可以用Ctrl + Alt + H呼出。
我自己用了好长时间了,感觉还比较顺手。但这程序当初毕竟只为我个人设计的,不知是否符合对大家的使用习惯,呵呵。不过不合适也没关系,有源代码呀,你可以自由修改,自己动手,丰衣足食。
欢迎大家使用并提出宝贵建议,程序的下载地址:
改进版:
原版:
闲聊一句:就这几个豆腐块文字,编辑了近两个小时。晕~