HHOOK glhHook = NULL; // 鉤子句柄
HINSTANCE glhInstance = NULL; // 模塊實例句柄
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL fEatKeystroke = FALSE;
PKBDLLHOOKSTRUCT p = NULL;
if (nCode == HC_ACTION)
{
p = (PKBDLLHOOKSTRUCT) lParam;
switch (wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
if(p->vkCode == VK_LWIN || p->vkCode == VK_RWIN){
// 屏蔽Win
fEatKeystroke =true;
}else if(p->vkCode == VK_TAB && (p->flags & LLKHF_ALTDOWN)){
// 屏蔽Alt+Tab
fEatKeystroke =true;
}else if(p->vkCode == VK_ESCAPE && (p->flags & LLKHF_ALTDOWN)){
// 屏蔽Alt+Esc
fEatKeystroke =true;
}else if(p->vkCode == VK_ESCAPE && GetKeyState(VK_CONTROL)){
// 屏蔽Ctrl+Esc
fEatKeystroke =true;
}
break;
default:
break;
}
}
return (fEatKeystroke ? true : CallNextHookEx(glhHook,nCode,wParam,lParam));
}
//安裝及卸載鉤子:
void _stdcall StartKeyMask()
{
// 安裝鉤子
glhHook = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,glhInstance,0);
}
void _stdcall StopKeyMask()
{
// 卸載鉤子
if (glhHook!=NULL)
UnhookWindowsHookEx(glhHook);
}
[MFC]屏蔽按鍵
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.