13,825
社区成员
发帖
与我相关
我的任务
分享
HHOOK OldHook; //钩子句柄
//---------------------------------------------------------------------------
//这个是回调函数
long CALLBACK KeyProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *pkbhs;
if (code < 0)
{
return CallNextHookEx(OldHook, code, wParam, lParam);
}
pkbhs = (KBDLLHOOKSTRUCT*) lParam;
if (pkbhs->vkCode == 91)
{
return 1; //封锁win键
}
if (pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)<0)
{
return 1; //封锁 CTRL+ESC
}
if (pkbhs->vkCode == VK_TAB && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+TAB
}
if (pkbhs->vkCode == 115 && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+F4
}
if (pkbhs->vkCode == VK_ESCAPE && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 ALT+ESC
}
if (pkbhs->vkCode == VK_SPACE && GetAsyncKeyState(VK_CONTROL)<0)
{
return 1; //封锁 CTRL+Space
}
if (pkbhs->vkCode == VK_DELETE && GetAsyncKeyState(VK_CONTROL)<0 && pkbhs->flags&LLKHF_ALTDOWN)
{
return 1; //封锁 CTRL+Alt+Del
}
return CallNextHookEx(OldHook, code, wParam, lParam);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn2Click(TObject *Sender)
{
//销毁钩子
UnhookWindowsHookEx( OldHook );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
//注册钩子
OldHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyProc, HInstance, 0);
}
//---------------------------------------------------------------------------