Создание сообщения WM_TOUCH для PostMessage() в C# / .NET
(Для справки см. Составление сообщения WM_TOUCH для SendMessage(), Kinect как устройство мультитач, которое задает в основном тот же вопрос, что и мой, но чей принятый ответ на самом деле не отвечает на вопрос. Сложный бит не заполняется TOUCHINPUT
структуры, но сделать правильный дескриптор сенсорного ввода
Я хотел бы смоделировать наличие мультитач-устройства ввода противным хакерским способом, который в общих чертах выглядит так:
while (true) {
choose locations etc. for simulated touches;
PostMessage(GetForegroundWindow(), WM_TOUCH, nTouches, ...);
}
Хитрый момент - то, что идет в том месте, помеченном "...". Документация MSDN, которая неудивительно написана с точки зрения потребителя WM_TOUCH
сообщения, говорит, что lParam
для WM_TOUCH
сообщение
ручка сенсорного ввода, которая может быть использована при вызове
GetTouchInputInfo
чтобы получить подробную информацию о точках касания, связанных с этим сообщением.
Я могу достаточно легко сделать, например, массив TOUCHINPUT
структуры, что к чему GetTouchInputInfo
дает тебе. Но это, похоже, совсем не то, что "ручка сенсорного ввода". (Например, ручка для сенсорного ввода должна быть правильной вещью для передачи CloseTouchInputHandle
который якобы PostMessage
или же SendMessage
Сделаю.)
Возможно ли (официально или неофициально!) Для пользовательского кода создать действительный дескриптор сенсорного ввода, который он может передать PostMessage
? Если так, то как?
1 ответ
В Windows 8 есть API TouchInjection для имитации прикосновений в среде рабочего стола.