Как я могу повторить мой код в Windows Mousehook, пока mouse1 удерживается - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужно повторить свою функцию в моем мышином крючке, пока левая кнопка мыши удерживается нажатой. Но с моим текущим кодом он вызывается только один раз. Я предположил, что когда я удерживаю левую кнопку мыши, код вызывается снова и снова, и я не уверен, что это действительно работает, что я хочу попробовать. Мне нужен код для запуска в ловушку для целей синхронизации.

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 );
}

1 Ответ

1 голос
/ 02 апреля 2019

Сообщения кнопок мыши не повторяются в Windows.

Когда вы получаете WM_LBUTTONDOWN, вы должны создать таймер с требуемой задержкой повторения, а затем обработать WM_TIMER сообщения в вашем обработчике ловушки и искать идентификатор таймера, который вы указали при создании таймера. .

Когда кнопка мыши отпущена и вы получаете WM_LBUTTONUP, вам следует удалить таймер .

Вы должны заметить, что любой код, который вы выполняете в ответ на сообщение WM_TIMER, должен также выполняться в событии WM_LBUTTONDOWN (если только вы не хотите задержки при первом нажатии кнопки), поэтому было бы лучше поставить этот код в функции, которую затем можно вызывать из обоих мест.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...