一、定义按键消息热键的宏,后续可自行添加更多 less
/************************************************************************/ // VirtualKey.H By:Koma 2009.08.22 // 定义热键 // http://blog.csdn.net/wangningyu /************************************************************************/ /* Ctrl组合键 (D、F二、F八、F九、F十、F十一、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组合键 (F一、F四、F9 共3个) /************************************************************************/ #define IDH_HOT7 4007 #define IDH_HOT8 4008 #define IDH_HOT9 4009 /************************************************************************/
二、注册全局的热键,从而实现屏蔽热键 函数
/************************************************************************/ /* 函数说明:MFC初始化函数,用来注册全局热键 /* 参 数:无 /* 返 回 值:成功返回TRUE、失败返回FALSE /* By:Koma 2009.07.30 17:50 /************************************************************************/ BOOL CHookKBDlg::OnInitDialog() { CDialog::OnInitDialog(); // 若是须要添加其余的组合键,须要在VirtualKey.h添加记录 // 在OnInitDialog、PreTranslateMessage中各添加一行代码便可 // Ctrl组合键 (D、F二、F八、F九、F十、F十一、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组合键 (F一、F四、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 }
三、有点像"占着茅坑不拉S”,直接过滤掉此消息... this
/************************************************************************/ /* 函数说明: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); }注意: 取消注册热键用 UnregisterHotKey(......)
------------------------------------------ spa
注意: 取消注册热键用 UnregisterHotKey(......) .net