前段时间有两个朋友问我VC如何注册、屏蔽全局键盘热键,这是以前写过的一段代码。说实话,自己都感觉它比较“猥琐”,多的不说看源码吧!(哪位兄弟有其他思路,可以交流交流......)
1、定义按键消息热键的宏,后续可自行添加更多
/************************************************************************/
/* 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、注册全局的热键,从而实现屏蔽热键
// 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”,直接过滤掉此消息...
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