为你的程序添加系统级热键

很多情况下,我们需要给程序添加一个系统级的热键。就像常用的QQ在启动后,任何时间只要按下Ctrl + Alt + z就能将QQ的主界面调出。当然,我们还可以干其他很多事情!:)

我们在为程序加上热键后,每当按下你所设定的快捷键,就会给主窗口发出一个WM_HOTKEY的消息,但很可惜,Class Wizartd并没有它。因此,我们需要按照以下步骤进行处理:

假设Project的名字是Temp,那么操作如下:
    1、在TempView.h文件中消息映射的说明处加入热键消息处理函数的声明。
           //{{AFX_MSG(CTempView)
           afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
           afx_msg void OnDestroy();
            afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
            afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
            afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);
            afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
            afx_msg void OnKillFocus(CWnd* pNewWnd);
            afx_msg void OnMouseMove(UINT nFlags, CPoint point);
            afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
            //}}AFX_MSG
            LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);//此句为加入内容,声明热键消息处理函数。
            DECLARE_MESSAGE_MAP()

           2、 接着在TempView.cpp中消息映射的定义处是用消息映射宏指定热键消息WM_HOTKEY的消息处理函数。
            BEGIN_MESSAGE_MAP(CTempView, CView)
             //{{AFX_MSG_MAP(CTempView)
             ON_WM_CHAR()
             ON_WM_DESTROY()
             ON_WM_CREATE()
             ON_WM_KEYDOWN()
             ON_WM_KEYUP()
             ON_WM_HSCROLL()
             ON_WM_KILLFOCUS()
             ON_WM_MOUSEMOVE()
             ON_WM_LBUTTONUP()
             //}}AFX_MSG_MAP
            ON_MESSAGE(WM_HOTKEY,OnHotKey) //此句为手工加入内容,指定了热键消息的处理函数。
            END_MESSAGE_MAP()
           3、在 OnCreate()函数中登记热键'*'。
           int CTempView::OnCreate(LPCREATESTRUCT lpCreateStruct)
           {
            if (CView::OnCreate(lpCreateStruct) == -1)
             return -1;

            // TODO: Add your specialized creation code here
           ::RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_ALT,'*');//登记热键.

注:'*'应改为虚拟键码 VK_MULTIPLY ,0-9,A-Z虚拟键码为其ASCII码 可以用(UINT)'A'强制类型转换

            return 0;
           }
           4、在TempView.cpp中编写OnHotKey()函数,当按下热键'*'时程序变为前台,并跳出一个消息框。
            LRESULT CTempView::OnHotKey(WPARAM wParam,LPARAM lParam)
            {
                if(wParam==1001)
                    MessageBox("I have been activated!!");
                return 0;
            }

            5、注销热键,释放系统资源.
            void CTempView::OnDestroy()
            {
             CView::OnDestroy();

             // TODO: Add your message handler code here
             UnregisterHotKey(m_hWnd,1001);//注销热键,释放系统资源.

            }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍: FlyHotKey(飞哥热键),是一个快速启动任意程序的绿色工具,可以一键启动文件、文件夹、网页;一键执行系统命令,如打开我的电脑、静音、关机等;一键控制窗口,如隐藏、显示、置顶、透明,一键截图/取色等;支持鼠标快速启动程序,桌面、标题栏、任意位置配合鼠标中键和右键完成。另外,还有闹铃和定时执行(计划任务)功能,可以设置密码保护,使其他人无法查看;可以随系统自动启动,支持文件和文件夹拖动功能,快速建立任务。操作说明:1.选择热键-新增,然后在任务中选择相应功能,选择热键,输入路径和参数,以及模式,确定即可。如果要连续添加热键,请单击应用,然后继续设置下一个热键。2.启用或禁用单独一个热键:直接选中或取消项目前的对号即可,禁用后将无法使用该热键和定时执行功能。3.禁止所有热键和禁止所有定时任务:选择文件菜单中的[禁止热键]或[禁止定时任务]即可。4.后台运行:选择[工具]-[设置],左边选择[基本],然后右边选中[启动后不显示主界面]即可。5.用外部程序打开文件夹或网页:默认文件夹用资源管理器打开,网页用系统默认浏览器打开,如果要自定义请在设置中选择外部程序,然后进行设置。6.快速执行一个功能:有时不想用热键,可将热键设置成无。按下ALT键然后双击一项,或者右键选择[立即执行],即可立即执行该项功能。7.定时执行:选择一项,然后选择[热键]-[定时],然后从中选择指定日期、每天、每周、离开、开机启动时和软件启动时等,再进行详细设置。8.密码:在[工具]-[设置]中设置。但是密码并没有保存在配置中,而是在数据文件中加密存放,所以一定要记住密码,否则忘记了就不能再恢复。9.拖动:把文件或文件夹拖动到主界面上,即可打开新建热键窗口,每次只能拖一个。10.备份热键:把本软件目录下的fhkdata.hkdb文件复制一份即可。推荐此方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值