15,471
社区成员
发帖
与我相关
我的任务
分享
// 安装底层键盘钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, NULL);
// 底层键盘钩子函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// 拦截键盘的某些按键, 如果 g_bDisableKeyboard 为 TRUE 则拦截整个键盘按键
if (nCode >= HC_ACTION)
{
KBDLLHOOKSTRUCT *pStruct = (KBDLLHOOKSTRUCT *)lParam;
if (g_bDisableKeyboard)
if (g_lpfnKeyboardProc(wParam, pStruct))
{
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
else
{
return true;
}
LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
for (int i = 0; i < g_nLength; i++)
{
if (pStruct->vkCode == *tmpVirtualKey++)
if (g_lpfnKeyboardProc(wParam, pStruct))
{
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
else
{
return true;
}
}
}
// 调用系统中的下一个钩子
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}