(如何)我可以在Windows上模拟触摸事件吗?

时间:2017-05-19 06:49:34

标签: c++ winapi touch multi-touch wm-touch

我用C ++编写的用于测试目的的实用程序当前使用SendInput函数来模拟用户输入,即鼠标和键盘事件。我现在想扩展我的程序,以便它能够模拟触摸事件,这样我就可以验证测试的程序处理例如WM_TOUCH消息正确(虽然该消息is deprecated,我仍然想验证它是否正确处理)。我不需要能够将触摸事件发送到特定的HWND,只需将它们发送到桌面上的某些X / Y坐标就足够了。

我考虑将HARDWAREINPUT结构与SendInput一起使用,以及直接发送WM_TOUCH(或WM_GESTURE?)消息,但在任何一种情况下,我都不清楚传递有关触摸事件的执行位置或方式的信息。

WM_TOUCH文档解释了lParam参数:

  

包含一个触摸输入句柄,可用于调用GetTouchInputInfo以检索有关与此消息关联的触摸点的详细信息。

...但我不清楚自己是否以及如何分配这样的“触摸输入句柄”。它总是只是当前进程的地址空间中的普通指针吗?如果是,我应该对TOUCHINPUT结构的hSource字段使用什么值?

1 个答案:

答案 0 :(得分:2)

您可能正在寻找Touch injection