以下是我的函数原型:
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如何检查内部,如果有输入或鼠标按钮被点击?
我想应该使用lParam,但我找不到方法。

最佳答案

作为MSDN says
如果hook过程返回的消息范围为WM_KEYFIRST to
WM_KEYLAST,以下条件适用:
EVENTMSG结构的paramL成员指定按下的键的虚拟键代码。
EVENTMSG结构的paramH成员指定扫描代码。
无法指定重复计数。事件总是表示一个关键事件。
所以,您可以这样访问它:

LRESULT CALLBACK JournalPlaybackProc(int code, WPARAM wParam, LPARAM lParam)
{
    // ... blah blah ...

    if (code == HC_GETNEXT)
    {
        // examine eventmsg
        EVENTMSG *pEvent = (EVENTMSG*)lParam;

        // keypress
        if (pEvent->message >= WM_KEYFIRST &&
            pEvent->message <= WM_KEYLAST)
        {
            // decode key press
            unsigned int uVirtualKeyCode = pEvent->paramL;
            unsigned int uScanCode = pEvent->paramH;

            // do your conditional checks here
            if (uVirtualKeyCode == VK_ENTER)
            {
                // Enter key was pressed
            }
        }
        else if (pEvent->message == WM_LBUTTONDOWN)
        {
            // left mouse click
        }
        else // ... add checks for other messages ....
    }

    // ... blah blah ...
}

关于c++ - JOURNAL RECORDPROC确定按下的键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21114651/

10-15 02:32