(对于背景,参见为SendMessage()编写WM_TOUCH消息,Kinect作为一个多点触控设备,它问的基本上和我的问题相同,但它的接受答案实际上并没有回答这个问题。)棘手的一点不是填充TOUCHINPUT
结构,而是制作一个有效的触摸输入句柄。
我想以一种讨厌的黑客方式模拟多点触控输入设备的存在,其大纲如下:
while (true) {
choose locations etc. for simulated touches;
PostMessage(GetForegroundWindow(), WM_TOUCH, nTouches, ...);
}
棘手的一点是在标记为"…"的空间里放了什么。MSDN文档,从WM_TOUCH
消息的消费者的角度来看,这并不奇怪,说WM_TOUCH
消息的lParam
是
一个触摸输入句柄,可以在调用
GetTouchInputInfo
时使用,以检索与此消息相关的触摸点的详细信息。
我可以很容易地制作,例如,TOUCHINPUT
结构的数组,这就是GetTouchInputInfo
给你的。但这似乎与"触摸输入手柄"是完全不同的东西。(例如,触摸输入句柄需要是传递给CloseTouchInputHandle
的正确类型的东西,据称PostMessage
或SendMessage
将会这样做。)
是否有可能(正式或非正式!)为用户代码生成一个有效的触摸输入句柄,它可以传递给PostMessage
?如果是,如何?
Windows 8有一个用于在桌面环境中伪造触摸的TouchInjection API。
http://social.technet.microsoft.com/wiki/contents/articles/6460.simulating-touch-input-in-windows-8-using-touch-injection-api.aspx