我使用SetWindowsHookEx捕获键盘事件
SetWindowsHookEx(WH_KEYBOARD_LL, HookCallback, NULL, 0)
HookCallback
LRESULT __stdcall HookCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
// the action is valid: HC_ACTION.
if (wParam == WM_KEYDOWN)
{
kbdStruct = *((KBDLLHOOKSTRUCT*)lParam);
printf("%ld\n", kbdStruct.vkCode);
}
}
}
按下“左移”时输出为
160
当按下“搜索”按钮(笔记本上带有放大镜图标的按钮)时,输出为
160
91
132
如何检查HookCallback中是否按下了“左移”或“搜索”按钮?
1条答案
按热度按时间yb3bgrhw1#
160是
VK_LSHIFT
,91是VK_LWIN
,132是VK_F21
。参见Virtual-Key Codes。唯一标准化的搜索键是VK_BROWSER_SEARCH
,因此很明显,您的键盘制造商正在使用非标准键作为其搜索键。您需要根据需要记住从一个事件到下一个事件所看到的键,例如: