HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.01.2021, 07:11
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

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

Цитата:

Имеется у меня мышь, у неё много кнопок (основные и дополнительные), основные кнопки работают нормально, т.к. их в полной мере поддерживает 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() (скорее всего), а код закрыт.
 
Ответить с цитированием

  #2  
Старый 23.01.2021, 02:16
Ya Zaregalsya
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами: 4714653

Репутация: 98
По умолчанию

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

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



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.