SendInput и TouchScreen конфликтуют с Windows

Прежде всего, извините за мой английский ^^

У меня заблокирована проблема с отправкой сообщений с помощью SendInput и сенсорных экранов

Вот подробности проблемы:

У меня есть приложение, которое восстанавливает сенсорный ввод в Raw с помощью «RegisterRawInputDevices».

Затем я перевожу эти записи в жесты, такие как панорамирование, увеличение/уменьшение масштаба и т. д.

Затем с помощью жестов я отправляю сообщения мыши/клавиатуры с помощью SendInput

Проблема в том, что на стороне Windows есть система, которая делает то же самое и конфликтует с моим приложением.

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

Прикоснитесь к образцу ошибки

Таким образом, курсор находится между двумя моими пальцами (зелеными), но время от времени курсор перескакивает на один из двух пальцев (красный).

Похоже, проблема связана с пучок

Я попробовал технику, указывающую здесь. Реестр TouchGate больше не существует в «Ordinateur\HKEY_CURRENT_USER\Software\Microsoft\Wisp\Touch».

Но он присутствует здесь: Ordinateur\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wisp\Touch

Если я установлю значение TouchGate на 0 и перезапущу компьютер, это частично решит мою проблему, потому что Windows больше не добавляет сообщения, и у меня все еще есть сенсорный ввод из Raw.

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

Я, очевидно, пытался добавить это значение в HKEY_CURRENT_USER, а также протестировал технику обновления окон с помощью «SendMessageTimeout» и сообщения «WM_SETTINGCHANGE», но безуспешно.

Еще один пример с видео: мое приложение использует SendInput с позиции моего пальца и добавляет -100 к позиции y: https://streamable.com/af8u3

Краткое содержание моего запроса

Как удалить системный (wisp) или другие мультитач оверлеи Windows, динамически (без перезагрузки машины)


person Nicolas    schedule 03.03.2020    source источник