要拦截按下的组合键(例如 Ctrl+Shift+A),我使用以下代码:
SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardMsgProc, hInstance, NULL);
//...
LRESULT WINAPI KeyboardMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT *kbdhs = reinterpret_cast<KBDLLHOOKSTRUCT*>(lParam);
if((kbdhs->vkCode == 0x41 && wParam == WM_KEYDOWN) &&
(GetAsyncKeyState(VK_LCONTROL) & 0x8000) &&
(GetAsyncKeyState(VK_LSHIFT) & 0x8000))
{
OutputDebugStringA("Ctrl+Shift+A pressed\r\n");
}
}
这是简单的代码并且有效。
但是我需要使用低级键盘钩子拦截组合键release。再次强调——不是按下组合键,而是释放组合键。我怎样才能做到这一点?有什么想法吗?
您可以根据您的问题收到按下组合键的通知。正如我在评论中所说,当组合键被捕获时,就该监视释放消息了。创建一个变量来指示开始捕获组合键的一个释放消息。当捕获到组合键的释放消息时,即为组合键的释放。