如何在按住鼠标 1 时在 Windows 鼠标钩中重复我的代码

How can I repeat my Code in Windows Mousehook while mouse1 is held down

本文关键字:鼠标 代码 我的 Windows 时在      更新时间:2023-10-16

我需要在按住鼠标左键的同时在鼠标钩中重复我的函数。但是使用我当前的代码,它只被调用一次。我假设当我按住鼠标左键时,代码会被一遍又一遍地调用,我不确定这是否真的适用于我想尝试的。我需要代码在钩子中运行以用于计时目的。

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时,应创建一个具有所需重复延迟的计时器,然后在钩子进程中处理WM_TIMER消息,并查找创建计时器时指定的计时器 ID。

当鼠标按钮被释放并且您收到WM_LBUTTONUP您应该删除计时器。

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