Как поймать события keybd_event()/mouse_event() в GTA SA?

Ya Zaregalsya

Известный
Автор темы
370
127
Продолжение этой эпопеи. Читать её не обязательно, вот краткая предыстория:

Имеется у меня мышь, у неё много кнопок (основные и дополнительные), основные кнопки работают нормально, т.к. их в полной мере поддерживает Windows и они реализованы через первичный драйвер. А вот дополнительные кнопки, увы, Windows не поддерживает, поэтому специально для них производитель выпустил дополнительное ПО, которое позволяет на эти кнопки назначить поддерживаемые Windows действия, к примеру на инопланетную EXTRA_BUTTON_3 можно назначить обычную ЛКМ. Так вот эти дополнительные кнопки, чтобы на них не назначали, работают лишь в половине программ, и что самое страшное, они не работают в GTA SA, из-за чего невозможно ПЛЮСЦЕХАТЬ 🤯😭🤬😫!

Экспериментальным путём удалось выяснить, что доп. кнопки не срабатывают в тех же приложениях, в которых не срабатывают хук LowLevelKeyboardProc и функции keybd_event(), mouse_event(). Следовательно, можно сделать вывод, что ПО от производителя отправляет события ввода через mouse_event(), она генерирует системные события ввода через мышь (позиция курсора, нажатия на кнопки). Судя по ответам на форумах, проблема этой функции кроется в её коммуникации с DirectX, который игнорирует сообщения ввода от Windows, т.е. кнопки не работают только в приложениях на базе старых DirectX, в т.ч. и в GTA SA.

Вопрос: Вопреки особенностям DirectX как всё-таки поймать событие, отправляемое keybd_event() и mouse_event() в GTA SA и обработать его? Специфика этого случая заключается в том, что нельзя эмулировать нажатие клавиши как-нибудь по-другому, производитель мыши уже сделал это через mouse_event() (скорее всего), а код закрыт.
 
Последнее редактирование:
  • Нравится
Реакции: markiz.desead
Решение
Я провозился с этими кнопками месяц, потратил 60-70 часов времени, разочаровался в IT, в человечестве, проклял всю Кремневую долину и японскую нацию, готовился изучать микроконтроллеры и писать драйвер с нуля.

Оказывается, нужно было всего лишь запустить софт для мыши от имени администратора.

Ya Zaregalsya

Известный
Автор темы
370
127
Я провозился с этими кнопками месяц, потратил 60-70 часов времени, разочаровался в IT, в человечестве, проклял всю Кремневую долину и японскую нацию, готовился изучать микроконтроллеры и писать драйвер с нуля.

Оказывается, нужно было всего лишь запустить софт для мыши от имени администратора.