在按住mouse1的同时,如何在Windows Mousehook中重复我的代码

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

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

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 );
}
c++ winapi
1个回答
1
投票

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

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

当鼠标按钮被释放,你收到WM_LBUTTONUP,你应该delete the timer

您应该注意,为响应WM_TIMER消息而执行的任何代码也应该在WM_LBUTTONDOWN事件中执行(除非您在第一次按下按钮时需要延迟),因此最好将该代码放在可以执行的函数中然后从两个地方打电话。

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