Разрешить касания за пределами экрана с помощью TouchInjection для Windows 8+ API? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть ситуация, когда мне нужно встроить некоторые сторонние приложения Unity с закрытым исходным кодом в наши собственные.Я внедряю DLL, которая создает общую текстуру DX11 из их цепочки обмена.Эта часть работает, и она сделана.

Кроме того, я хочу скрыть форму, обертывающую приложение Unity (вы можете, к счастью, установить их родительский дескриптор с помощью командной строки), чтобы я мог на 100% контролировать то, что происходит с его текстурой внаше собственное приложение (+ чтобы оно не мешало общему виду нашего собственного приложения).Это также хорошо работает, я получаю текстуру без проблем, даже когда форма Unity полностью за кадром.

Теперь моя проблема заключается в том, что это приложение Unity требует использования с мультитач и после некоторого количества погугливанияЧтение переполнения / стек Я вроде бы пришел к выводу, что нет способа (или я не нашел никакого способа) составить действительные WM_POINTER* сообщения только для одного окна в Windows.(это поддерживается тем, что вам нужно вызвать отдельную функцию WinApi для получения всех данных указателя / касания на основе их идентификатора, полученного в сообщении lParam из WM_POINTER*)

Так что я использую TouchInjection Windows API ( InitializeTouchInjection и InjectTouchInput ) (информация об этих API в Интернете вводит в заблуждение в лучшем виде, но я на самом деле решил все их причуды)отлично работает, если форма Unity видна на экране.Или, другими словами, если позиция касания находится за границами экрана.

И теперь, наконец, проблема: когда я указываю внеэкранную координату для введенных касаний, я получаю системное сообщение об ошибке ERROR_INVALID_PARAMETER (87 / 0x57).В противном случае это работает.Есть ли способ отключить эту проверку в Windows?Или кто-нибудь, кто решил эту проблему раньше?

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

Заранее спасибо!

1 Ответ

0 голосов
/ 25 февраля 2019

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

...