Member 13961598 Ответов: 1

Как использовать низкоуровневые крючки для мыши?


- Привет!
Я создаю скорострельную программу, которая быстро автокликает, когда пользователь удерживает левую кнопку мыши нажатой.

Обычно я использую GetAsyncKeyState, но так как он обнаруживает необработанный ввод, он будет обнаруживать щелчки, сделанные программой, а затем продолжать щелкать и никогда не останавливаться.

Пример задачи:


Код:

if (GetAsyncKeyState(VK_LBUTTON))
  {
  mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
  Sleep (10);
  }

Я искал в течение нескольких дней, и все потоки говорили мне использовать низкоуровневый MouseHook, документация очень запутана (особенно для новичка).

Как я мог бы сделать эту работу, может ли кто-нибудь дать мне пример крючка мыши, обнаруживающего левую мышь, чтобы удерживать и возвращать истинное значение переменной bool?

Спасибо за чтение!

Что я уже пробовал:

GetAsyncKeyState не будет работать, я попробовал несколько способов его реализации.

1 Ответов

Рейтинг:
1

Rick York

Я уже давно написал код для подключения мыши и клавиатуры и основал его на этой статье : Методические указания отслеживать ожидания пользователя время[^]. Он показывает вам, как установить крючок и контролировать входы. Ключевым моментом является то, что процедура hook должна находиться в DLL. По крайней мере, так было, и я предполагаю, что это все еще так, но я не уверен.

Эта статья довольно старая. Код, который я написал, все еще работает в W10, так что это тоже должно работать, но если вы нацелены на W10, я бы обязательно загрузил и запустил пример приложения из этой статьи и убедился, что оно работает для вас.