Обработка нескольких мышей - PullRequest
4 голосов
/ 01 мая 2011

Мы собираемся использовать один ПК (тонкий клиент) с Windows XP (Embedded) с Двойной монитор .

One of korean bank

  • Первый монитор : используется Банком Офицер (мышь и клавиатура) Офицер будет использовать браузер, а также некоторые банковские приложения win32
  • Второй монитор (сенсорный экран - elotouch) : используется посетителем, сидящим напротив Офицера Посетитель должен касаться HTML-кнопки обратной связи в браузере (второе окно), не прерывая движения мыши операторов .

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

Теперь мы можем читать как мышь, так и сенсорный экран, используя raw inputs (см. Ссылки ниже), и можем определить, какое устройство генерирует события. Наша идея состоит в том, чтобы перехватывать raw_input события с сенсорного экрана в компоненте ActiveX и отправлять его в JS, и отменять распространяющиеся события, чтобы события сенсорного экрана не мешали основной мыши.

Вопрос: Как отменить распространяющиеся (LEGACY) события от конкретного устройства HID (мыши), или, если есть более чем способы заставить его работать , могли бы кто-нибудь сказать или поделиться информацией о том, как этого добиться (MSDN или что-то), так как у нас нет большого опыта в написании драйверов.

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Я играл с чем-то похожим несколько лет назад, так что извините меня за некоторую расплывчатость, но я думаю, что у меня был некоторый успех, блокируя курсор на основном экране с помощью ClipCursor, который находится в API user32 ...

http://msdn.microsoft.com/en-us/library/ms648383(v=vs.85).aspx

... затем, когда событие мыши поступает от сенсорного устройства, поскольку оно находится за пределами области клипа, оно игнорируется, но события WM_INPUT по-прежнему генерируются, поэтому вы можете захватить их и опубликоватьсобственные события щелчка мышью непосредственно в браузере, который технически не перемещает курсор, поэтому на него не влияет вырезка.

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

0 голосов
/ 01 мая 2011

Как отменить распространяющиеся (LEGACY) события от определенного устройства HID (мышь)?

Сообщения мыши публикуются в очереди сообщений входной цепочки.Сообщения мыши находятся в диапазоне от WM_MOUSEFIRST до WM_MOUSELAST.Самый простой подход состоит в том, чтобы изменить ваш обработчик сообщений так, чтобы он глотал сообщения в этом диапазоне.

Сделайте так, чтобы ваш обработчик сообщений выглядел следующим образом:

while(GetMessage( &msg, hWnd, 0, 0 ))
{ 
    if ((msg.message<WM_MOUSEFIRST) || (msg.message>WM_MOUSELAST))
    {
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    }
}
...