Как определить устройство ввода, если мышь и тачпад включены - PullRequest
2 голосов
/ 04 января 2011

У меня уже есть хук WH_MOUSE_LL в моем приложении, но мне нужно другое поведение для мыши и сенсорной панели.

Я знаю о Raw Input API, но не знаю, как использовать его с хуками: (

Есть предложения?

Ответы [ 5 ]

4 голосов
/ 04 января 2011

Это должно быть то же самое, что и , различая несколько клавиатурных устройств .

1 голос
/ 04 января 2011

Разберите драйвер тачпада и посмотрите, как он работает. Это единственный путь, потому что драйверы могут использовать разные методы эмуляции мыши. И не забудьте проголосовать за мой ответ;).

0 голосов
/ 20 апреля 2013

Довольно простой пример чтения данных с любых других USB-устройств: http://sourceforge.net/projects/libusbdotnet/

Это проект с открытым исходным кодом C #. Модуль Test_Bulk - это именно то, что вы хотите отличить между USB-устройствами и считывать (записывать) данные с него.

0 голосов
/ 10 января 2012

В вашем случае, скорее всего, подойдет Raw Input.У меня нет опыта работы с ним, кроме того, что я знаю о его ограничениях относительно возможности захвата ввода, но не смог предотвратить его создания после того, как вы его захватили, что означает, что нажатия клавиш и события мыши будут происходить для другихприложения, даже если вы захватываете их с помощью Raw Input.Наконец, это то, чему я научился на зарубежных форумах.

Я разработал альтернативный подход, который способен различать устройства, перехватывать ввод и также предотвращать этот ввод от , делая .Это библиотека C, которая внутренне взаимодействует с драйверами фильтров устройств.

У меня есть два основных примера устранения неоднозначности устройств на github:

Ключевое различие между этими двумя примерами состоит в том, что образец hardwareid показывает, как получить идентификатор, предоставленный оборудованием вашего устройства, включая идентификатор поставщика, идентификатор продукта и, возможно,немного серийной информации.Проблема в том, что обычно этой предоставленной информации недостаточно для устранения противоречий между двумя идентичными устройствами.Они оказываются от одного поставщика, имеют одинаковую модель, в сумме равны, но не одинаковы.Таким образом, для устранения неоднозначности требуется некоторый вид идентификатора соединения, который может измениться при переподключении, но помогает устранить неоднозначность во время выполнения, и именно это показывает пример идентификации.

У меня есть macbook, и я смогчтобы отличить мою волшебную мышь от сенсорной панели (в bootcamp) с моей библиотекой.

Больше документов на http://oblita.com/Interception.

ПРИМЕЧАНИЕ: в настоящее время библиотека имеет ограничение в 10 клавиатур и 10 мышей.

0 голосов
/ 04 января 2011

Я попробовал cnPackRawInput и он работает нормально.у него есть функция KeyboardFromHandle, и я могу сравнить это с моей специальной клавиатурой (например, устройство MSR, сканер штрих-кода).Но я не имею ни малейшего представления о том, что это ручка указательного устройства.в любом случае вы можете попробовать.если он поддерживает, чем вы можете использовать.

извините за плохой английский.

http://www.google.com/codesearch/p?hl=en#6CoJUlkQju4/trunk/cnvcl/Source/NonVisual/CnRawInput.pas&q=rawinput%20package:http://cnpack%5C.googlecode%5C.com&sa=N&cd=3&ct=rc

...