注册全局快捷键和激活程序到前台

发布时间:2017-1-23 16:38:12 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"注册全局快捷键和激活程序到前台",主要涉及到注册全局快捷键和激活程序到前台方面的内容,对于注册全局快捷键和激活程序到前台感兴趣的同学可以参考一下。

前言:本人喜欢把winamp设置在托盘区,不过winamp不提供热键呼出,而我用惯OICQ的热键呼出,所以,每次想换歌时要用鼠标点击总觉得不爽。于是萌发了给它作个热键的想法,基本思想就是注册一个系统级热键当然热键不能直接注册在winamp上的,所以我把热键注册在一个对话框上,然后通过获得的winamp的句柄将winamp显示出来,并且是显示到最前方。而且对话框最小化时对它进行隐藏,这样不至于占用任务栏,也让人觉得热键就是winamp自己带的,对话框也同样用热键呼出。  具体步骤:首先创建一个对话框工程,添加edit控件,便于用户自己添加喜欢的热键,示例程序中默认的是"ctrl+某个键". m_Wap是winamp的热键m_Dlg是dialog的热键利用::RegisterHotKey进行注册   BOOL RegisterHotKey(  HWND hWnd,         // 接收hotkey窗口  int id,            // hotkey的id 范围是0x0000到0xBFFF  UINT fsModifiers,  // 可以是MOD_ALT MOD_CTRL MOD_WIN  UINT vk            // 虚拟键值,就是m_Wap,m_Dlg的值);void CXXXDlg::OnOk() ...{            // TODO: Add your control notification handler code here    UpdateData(TRUE);    m_Wap.MakeUpper();//字母转化成大写    m_Dlg.MakeUpper();    if((!::RegisterHotKey(this->m_hWnd,0Xa002,MOD_CONTROL,(UINT)m_Wap[0]))        &&(!::RegisterHotKey(this->m_hWnd,0Xa001,MOD_CONTROL,(UINT)m_Dlg[0])))               AfxMessageBox("*^_^* 热键已经注册了 *^_^*");        }//在PreTranslateMessage中响应 BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg) ...{    // TODO: Add your specialized code here and/or call the base class    if (pMsg->message==WM_HOTKEY && pMsg->wParam==0Xa002)    ...{                   //中文版        HWND handle=FindWindowEx(NULL,NULL,NULL,"Winamp 播放清单编辑器");                //英文版        HWND handle2=FindWindowEx(NULL,NULL,NULL,"Winamp Playlist Editor");        if(handle)        ...{            ::ShowWindow(handle,SW_SHOWNORMAL);            ::SetForegroundWindow(handle);        }        if(handle2)        ...{            ::ShowWindow(handle2,SW_SHOWNORMAL);                ::SetForegroundWindow(handle2);        }    }    if (pMsg->message==WM_HOTKEY && pMsg->wParam==0Xa001)    ...{        ::ShowWindow(this->m_hWnd,SW_SHOWNORMAL);        ::SetForegroundWindow(this->m_hWnd);    }    return CDialog::PreTranslateMessage(pMsg);}//程序结束时候自然要把热键注销了 void CXXXDlg::OnClose() ...{    // TODO: Add your message handler code here and/or call default    UnregisterHotKey(this->m_hWnd,0Xa001);    UnregisterHotKey(this->m_hWnd,0Xa002);    CDialog::OnClose();}   另:LoadAccelerators: function loads the specified accelerator table. HACCEL LoadAccelerators( HINSTANCE hInstance, // handle to module LPCTSTR lpTableName // accelerator table name );

上一篇:多个LCD下修改DISPLAY与TOUCHP驱动的经验
下一篇:和上司沟通必备8个黄金句

相关文章

相关评论