VC如何注册、屏蔽全局键盘热键

来源:互联网 发布:java 8实战 mobi 编辑:程序博客网 时间:2024/05/16 23:42

1、定义按键消息热键的宏,后续可自行添加更多

view source
print?
01/************************************************************************/  
02// VirtualKey.H     By:Koma 2009.08.22  
03// 定义热键  
04// http://blog.csdn.net/wangningyu  
05    
06/************************************************************************/  
07/* Ctrl组合键 (D、F2、F8、F9、F10、F11、F12              共6个) 
08/************************************************************************/  
09#define IDH_HOT1        4001  
10#define IDH_HOT2        4002  
11#define IDH_HOT3        4003  
12#define IDH_HOT4        4004  
13#define IDH_HOT5        4005  
14#define IDH_HOT6        4006  
15#define IDH_HOT19       4019  
16    
17/************************************************************************/  
18/* Alt组合键 (F1、F4、F9                             共3个) 
19/************************************************************************/  
20#define IDH_HOT7        4007  
21#define IDH_HOT8        4008  
22#define IDH_HOT9        4009  
23    
24/************************************************************************/  

2、注册全局的热键,从而实现屏蔽热键

view source
print?
01/************************************************************************/    
02/* 函数说明:MFC初始化函数,用来注册全局热键                                        
03/* 参    数:无                                    
04/* 返 回 值:成功返回TRUE、失败返回FALSE     
05/* By:Koma   2009.07.30 17:50                                 
06/************************************************************************/   
07BOOLCHookKBDlg::OnInitDialog()  
08{  
09    CDialog::OnInitDialog();  
10    // 如果需要添加其他的组合键,需要在VirtualKey.h添加记录  
11    // 在OnInitDialog、PreTranslateMessage中各添加一行代码即可  
12    
13    // Ctrl组合键 (D、F2、F8、F9、F10、F11、F12              共7个)  
14    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT1, MOD_CONTROL, VK_F2);  
15    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT2, MOD_CONTROL, VK_F8);  
16    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT3, MOD_CONTROL, VK_F9);  
17    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT4, MOD_CONTROL, VK_F10);  
18    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT5, MOD_CONTROL, VK_F11);  
19    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT6, MOD_CONTROL, VK_F12);  
20    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT19, MOD_CONTROL, 'D');  
21    
22    // Alt组合键 (F1、F4、F9                             共3个)  
23    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT7, MOD_ALT, VK_F1);  
24    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT8, MOD_ALT, VK_F4);  
25    RegisterHotKey(this->GetSafeHwnd(),IDH_HOT9, MOD_ALT, VK_F9);  
26    
27    returnTRUE; // return TRUE  unless you set the focus to a control  
28}  
0 0