Прежде всего, извините за мой английский ^^
У меня заблокирована проблема с отправкой сообщений с помощью 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, динамически (без перезагрузки машины)