如何拦截Windows 8上的触摸input

我正在写Windows 8的桌面应用程序,并希望当用户点击屏幕(例如)4手指popup。 我发现这个问题:

如何检测敲击(触摸input)全球而不是鼠标点击?

答案提供了3个解决scheme。 第一个不适合我,因为我想写在每个Win8平板电脑上运行的应用程序。

第二个(RegisterPointerInputTarget)效果很好(即使启动面板处于活动状态或城域应用程序正在运行,我的应用程序也会拦截所有可能的触摸input),但是Windows本身开始缺less某些触摸function(例如,我无法滚动开始面板用我的手指了)。 我试图注入触摸input,但没有运气:

if (message >= 0x0241 && message <= 0x024F) { DWORD pointerID = LOWORD (wParam); POINTER_TOUCH_INFO pti; GetPointerTouchInfo (pointerID, &pti); InjectTouchInput (1, &pti); } 

(是的,我已经调用InitializeTouchInjection(10,0x3);之前)另外,我个人不喜欢这种方式,因为文档说只有一个窗口可以注册自己的指针input。 所以我不希望我的应用程序占用这样的资源。

第三个解决scheme(挂)工作良好,但我不能拦截从地铁应用程序或开始面板的触摸。

有谁知道如何正确截取Windows 8上的所有触摸input? uiAccess = true不是问题,因为我的应用程序将被签名。 谢谢。

Solutions Collecting From Web of "如何拦截Windows 8上的触摸input"