#c# #.net #windows #mouseevent #mouse-hook
#c# #.net #Windows #mouseevent #мышь-зацеп
Вопрос:
Я написал низкоуровневый перехват мыши на C #, который должен фиксировать события XBUTTON. Для 1-й и 2-й кнопок xButton это работает просто отлично, но для 3-й кнопки xButton на моей мыши нет сообщения. Похоже, что нет никакого возможного способа захвата событий для этой кнопки?
У меня игровая мышь, и там, между двумя первыми xButtons, находится третья xButton. Когда я нажимаю на нее, ничего не происходит, поэтому я хотел написать пользовательское приложение для мыши C #, чтобы запрограммировать пользовательское поведение для этой кнопки…
Ответ №1:
Это правильно. Третья X-кнопка обрабатывается драйверами вашей мыши, а не самой Windows. Windows не имеет встроенных знаний или поддержки более двух X-кнопок. Эти дополнительные кнопки вообще ничего не будут делать без установленных специальных драйверов.
Вам нужно выяснить, как взаимодействовать с вашим программным обеспечением драйвера мыши. Это единственный способ получать уведомления при нажатии на эти кнопки.
Комментарии:
1. но lParam HookProc, который вызывается LL-Mouse-Hook, указывает на MSLLHOOKSTRUCT . В нем есть поле DWORD с именем
mouseData
. Старшее слово в этом поле указывает, какая кнопка x была нажата. На данный момент единственными возможными значениями являются 1 и 2 (для XButton1 и XButton2), но разве Windows не могла бы вызвать перехват, просто установив значение 3 для слова старшего порядка mouseData?2. @alex: Да, это верно. И да, теоретически это было бы возможно. Но это еще не реализовано. Это так же, как в Windows 95, не было встроенной поддержки колесиков прокрутки. Это не добавлялось до Windows 2000. Вашей единственной надеждой был драйвер IntelliMouse от MS или другой сторонний драйвер, поставляемый с вашей мышью. Здесь та же ситуация. Windows ничего не знает о 3-й кнопке X, и она никогда не вызовет событие с
mouseData
значением 3. Документация не просто забыла об этом.3. Хорошо, спасибо за вашу помощь. Я только что нашел свой компакт-диск с драйверами и сейчас собираюсь его установить. Может быть, в программном обеспечении logitech есть способ сообщить драйверу, что делать, когда нажата кнопка?
4. Итак, я установил программное обеспечение logitech «SetPoint» для своего gG500 и настроил функцию для 3-й кнопки xButton для нажатия горячей клавиши «CTRL SHIFT TAB». Теперь моя программа на C # регистрирует горячую клавишу через RegisterHotKey, и я все еще могу программировать функциональность, которую я хочу: D