忽略使用低级键盘钩子释放特定组合键(快捷键)

问题描述 投票:0回答:1

要拦截按下的组合键(例如 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。再次强调——不是按下组合键,而是释放组合键。我怎样才能做到这一点?有什么想法吗?

c++ winapi keyboard hook keyboard-shortcuts
1个回答
0
投票

您可以根据您的问题收到按下组合键的通知。正如我在评论中所说,当组合键被捕获时,就该监视释放消息了。创建一个变量来指示开始捕获组合键的一个释放消息。当捕获到组合键的释放消息时,即为组合键的释放。

© www.soinside.com 2019 - 2024. All rights reserved.