(Как) Можно ли эмулировать сенсорные события в Windows?
Утилита, которую я написал на C++ для тестирования, в настоящее время использует SendInput
функция для эмуляции пользовательского ввода, то есть событий мыши и клавиатуры. Теперь я хотел бы расширить свою программу так, чтобы она могла эмулировать сенсорные события, чтобы я мог проверить, что тестируемая программа обрабатывает, например, WM_TOUCH
сообщения правильно (хотя это сообщение устарело, я все же хотел бы убедиться, что оно обрабатывается правильно). Мне не нужно иметь возможность отправлять сенсорные события на определенный HWND
для этих целей достаточно просто отправить их по некоторым координатам X/Y на рабочем столе.
Я подумал об использовании HARDWAREINPUT
структуры с SendInput
а также отправка WM_TOUCH
(или же WM_GESTURE
?) сообщение, но в любом случае мне не ясно, как передать информацию о том, где и как было выполнено это событие касания.
WM_TOUCH
Документация объясняет, что lParam
аргумент:
Содержит дескриптор сенсорного ввода, который можно использовать при вызове GetTouchInputInfo для получения подробной информации о точках касания, связанных с этим сообщением.
... но неясно, смогу ли я сам выделить такую "ручку сенсорного ввода". Всегда ли это простой указатель в адресном пространстве текущего процесса? Если да, то какое значение я должен использовать для hSource
поле TOUCHINPUT
состав?