Подавить движение мыши - PullRequest
       7

Подавить движение мыши

0 голосов
/ 25 февраля 2011

Мне нужно заморозить курсор мыши на экране, чтобы он завис над определенным элементом пользовательского интерфейса. Пока мышь находится в этом замороженном состоянии, я все же хотел бы иметь возможность взаимодействовать с пользовательским интерфейсом, используя «фальшивый» указатель мыши.

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

Любая идея о том, как запретить Windows отправлять мне эти исправленные координаты, или другой способ, как я могу заморозить реальную мышь curosr и при этом позволить физической мышке управлять «поддельным» курсором?

Ответы [ 4 ]

1 голос
/ 26 апреля 2011

Вы можете подавить движение курсора мыши, используя эксклюзивный режим DirectInput.Вы должны приобрести устройство ввода мыши, когда движение курсора должно быть подавлено.Это заблокирует перемещение курсора Windows, но вы можете получать сообщения для вашего поддельного курсора с помощью DirectInput API.

0 голосов
/ 25 февраля 2011

Почему бы вам просто не нарисовать изображение курсора в месте, где вы хотите его заморозить, а затем установить настоящий курсор мыши, чтобы он был скрыт (Cursor.Hide IIRC).

0 голосов
/ 25 февраля 2011

Мне не ясно, что вы пытаетесь сделать, возможно, создаете учебник для своего приложения, хотите показать движения мыши и т. Д. Возможно, эта библиотека будет полезна:

http://www.codeproject.com/KB/system/globalmousekeyboardlib.aspx

0 голосов
/ 25 февраля 2011

Если вы переместите положение курсора мыши в ответ на сообщение WM_MOUSEMOVE, чтобы вернуть мышь туда, куда вы хотите, вы получите другое сообщение о перемещении мыши, потому что мышь была перемещена снова (потому что вы ее переместили). Чтобы остановить это, не устанавливайте положение мыши, если оно уже находится в нужном месте.

Вы также можете привязать положение мыши к окну и получить эксклюзивный доступ к нему.

...