Ya Zaregalsya
22.01.2021, 07:11
Продолжениеэтой эпопеи (https://www.blast.hk/threads/74080/). Читать её не обязательно, вот краткая предыстория:
Имеется у меня мышь, у неё много кнопок (основные и дополнительные), основные кнопки работают нормально, т.к. их в полной мере поддерживает Windows и они реализованы через первичный драйвер. А вот дополнительные кнопки, увы, Windows не поддерживает, поэтому специально для них производитель выпустил дополнительное ПО, которое позволяет на эти кнопки назначить поддерживаемые Windows действия, к примеру на инопланетную EXTRA_BUTTON_3 можно назначить обычную ЛКМ. Так вот эти дополнительные кнопки, чтобы на них не назначали, работают лишь в половине программ, и что самое страшное,они не работают в GTA SA, из-за чего невозможно ПЛЮСЦЕХАТЬ 🤯😭🤬😫!
Экспериментальным путём удалось выяснить, что доп. кнопки не срабатывают в тех же приложениях, в которых не срабатывают хук LowLevelKeyboardProc и функцииkeybd_event() (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWtleWJk X2V2ZW50),mouse_event() (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLW1vdXNl X2V2ZW50). Следовательно, можно сделать вывод, что ПО от производителя отправляет события ввода через mouse_event(), она генерирует системные события ввода через мышь (позиция курсора, нажатия на кнопки). Судя по ответам на форумах, проблема этой функции кроется в её коммуникации с DirectX, который игнорирует сообщения ввода от Windows, т.е. кнопки не работают только в приложениях на базе старых DirectX, в т.ч. и в GTA SA.
Вопрос: Вопреки особенностям DirectX как всё-таки поймать событие, отправляемое keybd_event() и mouse_event() в GTA SA и обработать его? Специфика этого случая заключается в том, что нельзя эмулировать нажатие клавиши как-нибудь по-другому, производитель мыши уже сделал это через mouse_event() (скорее всего), а код закрыт.
Имеется у меня мышь, у неё много кнопок (основные и дополнительные), основные кнопки работают нормально, т.к. их в полной мере поддерживает Windows и они реализованы через первичный драйвер. А вот дополнительные кнопки, увы, Windows не поддерживает, поэтому специально для них производитель выпустил дополнительное ПО, которое позволяет на эти кнопки назначить поддерживаемые Windows действия, к примеру на инопланетную EXTRA_BUTTON_3 можно назначить обычную ЛКМ. Так вот эти дополнительные кнопки, чтобы на них не назначали, работают лишь в половине программ, и что самое страшное,они не работают в GTA SA, из-за чего невозможно ПЛЮСЦЕХАТЬ 🤯😭🤬😫!
Экспериментальным путём удалось выяснить, что доп. кнопки не срабатывают в тех же приложениях, в которых не срабатывают хук LowLevelKeyboardProc и функцииkeybd_event() (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWtleWJk X2V2ZW50),mouse_event() (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLW1vdXNl X2V2ZW50). Следовательно, можно сделать вывод, что ПО от производителя отправляет события ввода через mouse_event(), она генерирует системные события ввода через мышь (позиция курсора, нажатия на кнопки). Судя по ответам на форумах, проблема этой функции кроется в её коммуникации с DirectX, который игнорирует сообщения ввода от Windows, т.е. кнопки не работают только в приложениях на базе старых DirectX, в т.ч. и в GTA SA.
Вопрос: Вопреки особенностям DirectX как всё-таки поймать событие, отправляемое keybd_event() и mouse_event() в GTA SA и обработать его? Специфика этого случая заключается в том, что нельзя эмулировать нажатие клавиши как-нибудь по-другому, производитель мыши уже сделал это через mouse_event() (скорее всего), а код закрыт.