【发布时间】:2013-02-27 16:42:21
【问题描述】:
(有关背景,请参阅Composing a WM_TOUCH message for SendMessage(), Kinect as a multi-touch device,它提出的问题与我的基本相同,但其接受的答案实际上并未回答问题。棘手的一点不是填充TOUCHINPUT 结构,而是制作有效的触摸输入句柄.)
我想以一种令人讨厌的骇人听闻的方式模拟多点触控输入设备的存在,大致如下:
while (true) {
choose locations etc. for simulated touches;
PostMessage(GetForegroundWindow(), WM_TOUCH, nTouches, ...);
}
棘手的一点是标记为“...”的空间中的内容。从WM_TOUCH 消息的消费者 的角度来看,MSDN 文档毫不奇怪,它说WM_TOUCH 消息的lParam 是
一个触摸输入句柄,可用于调用
GetTouchInputInfo以检索有关与此消息关联的触摸点的详细信息。
我可以很容易地制作,例如 TOUCHINPUT 结构的数组,这就是 GetTouchInputInfo 给你的。但这似乎与“触摸输入句柄”完全不同。 (例如,触摸输入句柄必须是传递给CloseTouchInputHandle 的正确类型,据称PostMessage 或SendMessage 会这样做。)
用户代码是否有可能(官方或非官方!)生成一个可以传递给PostMessage的有效触摸输入句柄?如果可以,怎么做?
【问题讨论】:
-
说“没办法”很难。嗯,不,不可能。你需要 SendInput() 的等价物,它不存在用于触摸。
-
这也是我的猜测!我只是希望可能有一些邪恶的无证hacky方式来做到这一点。 (例如,也许触摸输入句柄实际上只是一个指向一堆 TOUCINPUT 结构的指针——尽管这需要一些非常不可能的魔法,因为指针不能在进程之间有意义地传递。)你的“不方式”的意思是“没有合法的方式”或“绝对没有办法,包括讨厌的黑客”?
标签: c# .net winapi multi-touch wm-touch