在按住鼠标左键的同时,我需要在鼠标钩中重复我的功能。但是使用我当前的代码,它只会被调用一次。我以为,当我按住鼠标左键时,代码会被一遍又一遍地调用,我不确定这是否真的有效,我想尝试一下。我需要代码在挂钩中运行以便计时。

LRESULT __stdcall hk_mouse( int nCode, WPARAM wParam, LPARAM lParam )
{
    if (nCode >= 0)
    {
        switch (wParam) {
            case WM_LBUTTONDOWN:
            {
                Beep( 1000, 100 );
                break;
            }
            case WM_LBUTTONUP:
            {
                break;
            }
            default:
            {
                break;
            }
        }
    }

    return CallNextHookEx( mouse_hook, nCode, wParam, lParam );
}

最佳答案

鼠标按钮消息在Windows中不再重复。

收到WM_LBUTTONDOWN时,应使用所需的重复延迟create a timer,然后在hook proc中处理WM_TIMER消息,并在创建计时器时查找您指定的计时器ID。

释放鼠标按钮并收到WM_LBUTTONUP时,您应该delete the timer

您应注意,响应WM_TIMER消息而执行的任何代码也应在WM_LBUTTONDOWN事件中执行(除非您希望在首次按下按钮时有所延迟),因此最好将该代码放入然后可以从两个地方调用的函数。

关于c++ - 按住mouse1的同时如何在Windows Mousehook中重复代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55475462/

10-10 14:13
查看更多