Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
1

Реагирование программой на органы управления не стандартных USB устройств

13.11.2018, 09:39. Показов 1148. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Для чего нужно, если кому интересно
Хочу написать конфигуратор для своих целей, и мне кажется, что было бы удобно использовать для работы с ним 3D-манипулятор на подобии SpaceMouse Wireless 3DX-700066, но её стоимость почти 13 килорублей, поэтому, до её покупки хотелось бы разобраться, смогу ли я её встроить в свою программу, поэтому решил сначала отработать вопрос на GamePad'ах


Собственно вопрос такой - приходят ли сообщения на подобии WM_... при использовании кнопок USB устройств отличных от мыши и клавиатуры? И, если приходят, то какие это сообщения? Как проверить?

Интернет перерывал, нашел по сути всего три ветки:
1) DirectInput (от DirectX)
2) SetupAPI
3) и команды определения USB устройств на подобии WM_DEVICECHANGE - но они мне, я так понимаю не нужны для обработки информации

DirectInput хотелось бы оставить на крайний случай.
SetupAPI не разбирался особо (ну, точнее не очень то получилось ), но я так понял это слишком замысловато для моих целей.

Вообще, происходит ли вещание Windows такой информации в окно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2018, 09:39
Ответы с готовыми решениями:

На мониторе моргает надпись "Органы управления монитора заблокированы"
У меня монитор филипс 190s вчера на нем выскочила настройка меню яркость и не убиралась с монитора...

Переодически перестают работать USB порты на материнке после подключения устройств к USB корпуса
Собственно проблема почти описана в заголовке. Довольно странная фигня. К материнке подключены...

Отображение стандартных элементов управления
Помогите разобраться. Есть код простой программы. На одной машине работает на ура, на другой,...

USB 2.0 и USB 3.0 - питание устройств
Извиняюсь, если не тот раздел форума. Выбрал этот, так как есть что-то общее с вопросом и люди тут...

5
131 / 116 / 25
Регистрация: 03.05.2017
Сообщений: 336
Записей в блоге: 1
13.11.2018, 14:42 2
Делaл как-то утилиту «Жестурь» на RawInput…
Думаю, там могут быть некоторые нужные фрагменты.

Не по теме:

Коротко: В Windows несколько подключенных мышек дублируют друг друга.
Сама программа позволяет перенаправить события от «лишних» мышек на клавиатуру.
Например, управлять громкостью системного микшера или имитировать нажатия других клавиш.

1
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
14.11.2018, 08:32  [ТС] 3
Цитата Сообщение от Alikberov Посмотреть сообщение
RawInput
Точно, ведь где-то встречал на англоязычном формуе разработчиков игр информацию о двух мышках и некорректной работе, но почему-то пролистнул. Буду разбираться с RAWInput =)
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
20.11.2018, 09:51  [ТС] 4
Так, вопрос в догонку... я не совсем понял.
Вот если у меня есть две мышки, я могу только одну из них использовать как RAWinputDevice?

Ну, условно говоря, вот список моих подключённых устройств:
1) RIM_TYPEMOUSE usUsage: 0, usUsagePage: 0 \\?\HID#VID_09DA&PID_9090&MI_01#7&344b04dd&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}
2) RIM_TYPEKEYBOARD usUsage: 0, usUsagePage: 12 \\?\HID#VID_09DA&PID_9090&MI_00&Col01#7&1073c71b&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}
3) RIM_TYPEHID usUsage: 165, usUsagePage: 65440 \\?\HID#VID_09DA&PID_9090&MI_00&Col04#7&1073c71b&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
4) RIM_TYPEHID usUsage: 1, usUsagePage: 12 \\?\HID#VID_09DA&PID_9090&MI_00&Col03#7&1073c71b&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
5) RIM_TYPEMOUSE usUsage: 0, usUsagePage: 0 \\?\HID#VID_09DA&PID_9090&MI_01#7&25c3b316&0&0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}
6) RIM_TYPEKEYBOARD usUsage: 0, usUsagePage: 12 \\?\HID#VID_09DA&PID_9090&MI_00&Col01#7&129396d8&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}
7) RIM_TYPEHID usUsage: 165, usUsagePage: 65440 \\?\HID#VID_09DA&PID_9090&MI_00&Col04#7&129396d8&0&0003#{4d1e55b2-f16f-11cf-88cb-001111000030}
8) RIM_TYPEHID usUsage: 1, usUsagePage: 12 \\?\HID#VID_09DA&PID_9090&MI_00&Col03#7&129396d8&0&0002#{4d1e55b2-f16f-11cf-88cb-001111000030}
9) RIM_TYPEHID usUsage: 1, usUsagePage: 12 \\?\HID#VID_09DA&PID_0260&MI_01&Col02#7&5b865a5&0&0001#{4d1e55b2-f16f-11cf-88cb-001111000030}
10) RIM_TYPEKEYBOARD usUsage: 0, usUsagePage: 12 \\?\Root#RDP_KBD#0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}
11) RIM_TYPEKEYBOARD usUsage: 0, usUsagePage: 12 \\?\HID#VID_09DA&PID_0260&MI_00#7&34472008&0&0000#{884b96c3-56ef-11d1-bc8c-00a0c91405dd}
12) RIM_TYPEMOUSE usUsage: 0, usUsagePage: 0 \\?\Root#RDP_MOU#0000#{378de44c-56ef-11d1-bc8c-00a0c91405dd}


Так вот пункты 1,2 и 3 - это мышь №1, пункты 5,6 и 7 - это мышь №2. Причём это две подключённые USB мышки. У них совпадают все usUsage и usUsagePage, можно ли зарегистрировать только одну мышку как RAWInput устройство? Или, если нельзя, смогу ли я понимать, что WM_INPUT приходит от конкретного устройства?
0
131 / 116 / 25
Регистрация: 03.05.2017
Сообщений: 336
Записей в блоге: 1
20.11.2018, 23:07 5
Нe совсем понял вопроса…
Когда я начал работать с RawInput, тоже строил список, чтобы определить основное устройство.
По-моему, легче составить список всех мышек и при их активности подсвечивать строчку с индексом конкретной мышки, чтобы пользователь наглядно видел визуально, какая из мышек где в списке значится и мог галочкой её отметить как особенную
0
128 / 86 / 10
Регистрация: 03.02.2011
Сообщений: 477
21.11.2018, 09:38  [ТС] 6
Цитата Сообщение от Alikberov Посмотреть сообщение
Нe совсем понял вопроса…
Ну, устройство, как особенное, регистрируется при помощи функции RegisterRawInputDevices, в которую передаётся переменная типа RAWINPUTDEVICE,а в ней то данных всего 4 (dwFlags, hwndTarget, usUsage, usUsagePage), и, я так понял, что данные об устройстве именно в usUsage, usUsagePage, но они для обеих подключенных мышек одинаковые (да ещё и неверные ).
Поэтому и вопрос, а как только одно устройство из списка зарегистрировать как RAWInput устройство? Возможно это?
0
21.11.2018, 09:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2018, 09:38
Помогаю со студенческими работами здесь

"Устройство USB не опознано. Одно из подключенных к этому компьютеру USB-устройств работает неправильно и Windows не удается опознать его..."
У меня такая проблема: глючит USB. Обьясняю суть - на компьютере два разъема для USB, оба рабочие,...

Создание таблицы без использования стандартных элементов управления
Как мне создать динамически таблицу на форме, не используя DataGridView и GridControl, что бы...

Как создать свой элемент управления, комбинирующий несколько стандартных
Вообщем мне нужно создать свой контрол такого вида Будьте добры, подскажите :) или примерчик

перехват управления программой
Доброго времени суток, господа. Подскажите вот какую штуку, может кто сталкивался: есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru