Chinaunix首页 | 论坛 | 博客
  • 博客访问: 578275
  • 博文数量: 752
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(752)

文章存档

2011年(1)

2008年(751)

我的朋友

分类:

2008-10-13 16:51:14


喂马 劈柴 做一个幸福的人
2005年8月
3135
9101213
1516181920
21242627
28293031123
45678910
公告
  • ◇ 欢迎来到这里的每一位朋友。

    ◇ 无需注册即可评论或留言。

    ◇ 文章无"转载(ZT)"字样均为原创。

    ◇ "随笔分类"中包含我的所有随笔

留言簿(13)

随笔分类

随笔档案

文章分类

文章档案

相册

工具网站

搜索

最新评论

  • 这两天接触一些svg方面的东西,里面图片也是base64.
  • --sjdev

  • C上升到哲学的高度啦??!! 支持~
  • --玻璃小屋
  • 无招胜有招,没有必要啃熟了那些刁钻的东西才认为精通了
  • --lostpencil
  • 希望大家踊跃发言,也给我们这些门外汉一些启示。


    我自己觉得关键得自己动手,光靠看书和上论坛是学不了编程的。
  • --changroc
  • 个人觉得C只是一个工具。掌握工具就行了。更多的是软件系统架构的设计,硬件驱动接口,算法的设计。很多东西只需要有基础的C就能做。
  • --zgf
  • 我的硬盘上也有这么个文件夹,以为是文件系统错误,一直没理,今天回去试试
  • --TEMP
  • 不错,呵呵。
  • --绞肉机配件
  • 漂亮
  • --Petroleum Machinery
  • 不错,机箱后面一张MM张片不错-.-!
  • --快乐小胖鸟
  • 漂亮。赞一个。小心EA找你收logo的版权费哦
  • --zgf的blog

  • 电子邮件都是这个编码~
  • --玻璃小屋
  • 恩。
  • --sjdev
  • 跟进去单步运行一下,看看到哪步死的。我是xp+vs6环境
  • --hATEmATH
  • 对不负责任的垃圾评论一律删无赦
  • --hATEmATH
  • 不行啊,点击一下就死了,再指教一下
    haibeike88@163.com
    谢谢!
  • --海贝壳
  • 谢谢,离吃喜糖还有一段时间呢,呵呵。
  • --hATEmATH
  • 恭喜啊。看来要吃喜糖了
  • --changroc
  • 呵呵,谢谢changroc
  • --hATEmATH
  • 对,这本书很实用的说
  • --zdd
  • 对初学者来说还是不错的。
    那些什么沉思路很容易走歪路。
  • --Diviner

阅读排行榜

评论排行榜

 
            
  随笔-125 文章-20 评论-449 Trackbacks-0

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的代码吧:

//处理WM_HOTKEY
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg) 

{

       
if(WM_HOTKEY == pMsg->message)

       
{

              
int           idHotKey = (int)pMsg->wParam;               //消息名称

              UINT       uVirtKey 
= (UINT) HIWORD(pMsg->lParam);  //虚拟码

              


              
//ID_HOTKEY 自定义消息,表示确实要显示窗口

              
//否则吞掉一切热键消息,偶自己处理
              pMsg->message = 0;

              
if(ID_HOTKEY == idHotKey)

              
{     

                     
//显示程序的窗口

                     CenterWindow();

                     ShowWindow(SW_SHOWNORMAL);

                     SetForegroundWindow();

              }


 

              
//几个特殊的按钮

              
else if(VK_UP == idHotKey)

              
{

                     
//音量增加
                     SetVolume(0x0800);

              }


              
else if(VK_DOWN == idHotKey)

              
{

                    
//音量减小

                     …….

              ……

}

 

附录:
(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呼出。


    我自己用了好长时间了,感觉还比较顺手。但这程序当初毕竟只为我个人设计的,不知是否符合对大家的使用习惯,呵呵。不过不合适也没关系,有源代码呀,你可以自由修改,自己动手,丰衣足食。

 

欢迎大家使用并提出宝贵建议,程序的下载地址:
    改进版:
   
    
    原版:

      

闲聊一句:就这几个豆腐块文字,编辑了近两个小时。晕~

posted on 2005-08-11 20:48 HateMath的网上田园 阅读(3695)   
 re: 推荐一款工具软件给喜欢键盘操作的朋友们,用来扩展系统的快捷键

Posted @ 2005-08-12 09:27
路过~~~~~
  •  re: 推荐一款工具软件给喜欢键盘操作的朋友们,用来扩展系统的快捷键

    Posted @ 2005-08-12 22:40
    偶上大一的时候就准备把这个功能加入偶的小程序里面,遗憾的是偶的小程序只出到0.11 alpha版,就
    没有在更新过,虽然现在还一直再用,嘿嘿。
  •  test

    Posted @ 2005-08-12 22:44
     
  •  re: 推荐一款工具软件给喜欢键盘操作的朋友们,用来扩展系统的快捷键

    Posted @ 2005-08-12 23:49
    显不出来,不知道啥问题。自己下下来看吧。嘿嘿。
  •  re: 推荐一款工具软件给喜欢键盘操作的朋友们,用来扩展系统的快捷键

    Posted @ 2005-08-13 09:50
    我的也是好久没更新了,反正平常够用。于是懒了,呵呵
    其实有好多值得改进的地方。
  •  re: 推荐一款工具软件给喜欢键盘操作的朋友们,用来扩展系统的快捷键

    Posted @ 2005-08-13 09:54
    刷了两次屏,终于出图片了。
    看起来做的不错,大一就做出这个东东,佩服啊佩服。不过偶觉得点鼠标还是比较慢,相比之下键盘操作更爽。呵呵
  •  to HateMath :

    Posted @ 2005-08-17 22:51
    超过20个程序比较常用,注册热键就。。。嘿嘿,自己也记不住阿。
  •  re: 推荐一款工具软件给喜欢键盘操作的朋友们,用来扩展系统的快捷键

    Posted @ 2005-08-18 00:06
    -_-!! 我汗.....
  •  re: 我把常用工具做成按钮打开放在DLG上,然后放在快速启动栏

    Posted @ 2006-07-22 14:54
    好处是不用背,一点就出来了

    哈哈@@

  • --------------------next---------------------

    阅读(316) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~