一、定義按鍵消息熱鍵的宏,後續可自行添加更多 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