VC如何注册、屏蔽全局键盘热键
2009-08-22 16:34
597 查看
前段时间有两个朋友问我VC如何注册、屏蔽全局键盘热键,这是以前写过的一段代码。说实话,自己都感觉它比较“猥琐”,多的不说看源码吧!(哪位兄弟有其他思路,可以交流交流......)
1、定义按键消息热键的宏,后续可自行添加更多
2、注册全局的热键,从而实现屏蔽热键
3、有点像"占着茅坑不拉S”,直接过滤掉此消息...
4、VC源代码下载地址
程序在VC6.0 + WIN SP3下测试完成通过,如有什么问题,可以发邮件交流!
网盘下载:http://www.rayfile.com/files/8dda00ca-8ef9-11de-9b83-0014221b798a/
CSDN: http://download.csdn.net/source/1596580
QQ:27746072 E-mail:koma0769@vip.qq.com
1、定义按键消息热键的宏,后续可自行添加更多
/************************************************************************/ // VirtualKey.H By:Koma 2009.08.22 // 定义热键 // http://blog.csdn.net/wangningyu /************************************************************************/ /* Ctrl组合键 (D、F2、F8、F9、F10、F11、F12 共6个) /************************************************************************/ #define IDH_HOT1 4001 #define IDH_HOT2 4002 #define IDH_HOT3 4003 #define IDH_HOT4 4004 #define IDH_HOT5 4005 #define IDH_HOT6 4006 #define IDH_HOT19 4019 /************************************************************************/ /* Alt组合键 (F1、F4、F9 共3个) /************************************************************************/ #define IDH_HOT7 4007 #define IDH_HOT8 4008 #define IDH_HOT9 4009 /************************************************************************/
2、注册全局的热键,从而实现屏蔽热键
/************************************************************************/ /* 函数说明:MFC初始化函数,用来注册全局热键 /* 参 数:无 /* 返 回 值:成功返回TRUE、失败返回FALSE /* By:Koma 2009.07.30 17:50 /************************************************************************/ BOOL CHookKBDlg::OnInitDialog() { CDialog::OnInitDialog(); // 如果需要添加其他的组合键,需要在VirtualKey.h添加记录 // 在OnInitDialog、PreTranslateMessage中各添加一行代码即可 // Ctrl组合键 (D、F2、F8、F9、F10、F11、F12 共7个) RegisterHotKey(this->GetSafeHwnd(),IDH_HOT1, MOD_CONTROL, VK_F2); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT2, MOD_CONTROL, VK_F8); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT3, MOD_CONTROL, VK_F9); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT4, MOD_CONTROL, VK_F10); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT5, MOD_CONTROL, VK_F11); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT6, MOD_CONTROL, VK_F12); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT19, MOD_CONTROL, 'D'); // Alt组合键 (F1、F4、F9 共3个) RegisterHotKey(this->GetSafeHwnd(),IDH_HOT7, MOD_ALT, VK_F1); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT8, MOD_ALT, VK_F4); RegisterHotKey(this->GetSafeHwnd(),IDH_HOT9, MOD_ALT, VK_F9); return TRUE; // return TRUE unless you set the focus to a control }
3、有点像"占着茅坑不拉S”,直接过滤掉此消息...
/************************************************************************/ /* 函数说明:MFC虚函数,用来屏蔽热键 /* 参 数:无 /* 返 回 值:屏蔽返回TRUE、不屏蔽返回FALSE /* By:Koma 2009.07.30 17:50 /************************************************************************/ BOOL CHookKBDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message==WM_HOTKEY) { switch(pMsg->wParam) { case IDH_HOT1: case IDH_HOT2: case IDH_HOT3: case IDH_HOT4: case IDH_HOT5: case IDH_HOT6: case IDH_HOT7: case IDH_HOT8: case IDH_HOT9: // MessageBox(_T("此类组合键严禁使用!")); // true 标示处理过此消息不再投递到消息队列, SetDlgItemText(IDC_STATIC1,"别按了,没用的!"); return TRUE; } } return CDialog::PreTranslateMessage(pMsg); }
4、VC源代码下载地址
程序在VC6.0 + WIN SP3下测试完成通过,如有什么问题,可以发邮件交流!
网盘下载:http://www.rayfile.com/files/8dda00ca-8ef9-11de-9b83-0014221b798a/
CSDN: http://download.csdn.net/source/1596580
QQ:27746072 E-mail:koma0769@vip.qq.com
相关文章推荐
- VC如何注册、屏蔽全局键盘热键
- 【原创】vc 如何注册系统热键
- vc 如何注册系统热键
- 如何注册全局热键(c++builder)
- vc 如何注册多个系统热键
- B/S模式下如何使软件屏蔽系统热键
- vc中如何响应键盘和鼠标事件
- 如何用VC实现软件注册
- vc中如何响应键盘和鼠标事件
- vc中如何响应键盘和鼠标事件
- 如何在C#中使用全局鼠标、键盘Hook
- axios模块在vue开发中如何使用引入,如何注册全局方法
- vc如何使用热键跳出for循环体
- 如何在C#中使用全局鼠标、键盘Hook
- 如何在C#中使用全局鼠标、键盘Hook
- VC++实现监视系统的键盘操作 创建记录键盘动作的全局钩子DLL
- 如何通过js全局屏蔽回车键 以解决一些不必要的麻烦
- 用DELPHI如何注册系统级热键
- 在VC++MFC下如何定义全局变量和全局函数
- 如何在你的java程序中注册系统级热键