как найти, откуда происходит событие мыши?

Есть ли способ выяснить, откуда появилось событие мыши?
Я имею в виду, что если я пишу программу на C / C ++ для Windows и получаю событие щелчка мышью, как я могу найти, происходит ли это событие с помощью драйвера мыши, сенсорной панели или оно было отправлено приложением (событие мыши симуляция путем отправки соответствующего сообщения типа WM_LBUTTONDOWN).

Спасибо за любую помощь 🙂

0

Решение

Это невозможно для приложения в пользовательском режиме — события мыши обычно не предоставляют документированной информации об источнике событий. Есть способ получить некоторую дополнительную информацию о сообщении с помощью функции Win32 API. GetMessageExtraInfo но нет безопасного способа интерпретировать эти данные. Он очень специфичен для устройства, не имеет документов и никогда не гарантируется.

Для решения этой задачи вам необходимо разработать собственную Драйвер фильтра мыши на примере Windows DDK.

Его обратный вызов имеет входной параметр MOUSE_INPUT_DATA — структура, содержащая информацию о событиях мыши. Есть поле UnitId:

UnitID Определяет номер устройства мыши. Имя устройства мыши имеет формат \Device\PointerPortNгде суффикс N — это номер устройства. Например, устройство, имя которого \Device\PointerPort0, имеет единичный номер ноль и устройство, имя которого \Device\PointerPort1, имеет единичный номер один.

2

Другие решения

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

Так что лучше создать свой собственный драйвер мыши.
Мне нужен был безопасный способ, чтобы имитировать поведение мыши / клавиатуры для моего бота, и я написал подробную статью в своем блоге http://poker-botting.blogspot.fr/2012/11/how-to-simulate-mouse-and-keyboard.html

0

По вопросам рекламы [email protected]