如何在Windows 8上拦截触摸输入

如何在Windows 8上拦截触摸输入,windows,input,touch,hook,intercept,Windows,Input,Touch,Hook,Intercept,我正在编写Windows8桌面应用程序,希望它在用户用4个手指轻触屏幕时弹出。我发现了这个问题: 答案提供了3种解决方案。第一个对我来说并不好,因为我想写一个可以在每个Win8平板电脑上运行的应用程序 第二个注册表PointerInputTarget运行良好我的应用程序会截获所有可能的触摸输入,即使启动面板处于活动状态或metro应用程序正在运行,但Windows本身开始缺乏一些触摸功能,例如,我无法再用手指滚动启动面板。我尝试将触摸输入注入回,但一点运气都没有: if (message >

我正在编写Windows8桌面应用程序,希望它在用户用4个手指轻触屏幕时弹出。我发现了这个问题:

答案提供了3种解决方案。第一个对我来说并不好,因为我想写一个可以在每个Win8平板电脑上运行的应用程序

第二个注册表PointerInputTarget运行良好我的应用程序会截获所有可能的触摸输入,即使启动面板处于活动状态或metro应用程序正在运行,但Windows本身开始缺乏一些触摸功能,例如,我无法再用手指滚动启动面板。我尝试将触摸输入注入回,但一点运气都没有:

if (message >= 0x0241 && message <= 0x024F)
{
    DWORD pointerID = LOWORD (wParam);
    POINTER_TOUCH_INFO pti;

    GetPointerTouchInfo (pointerID, &pti);
    InjectTouchInput (1, &pti);
}
是的,我调用了InitializeTouchInjection 10,0x3;在此之前,我个人不喜欢这种方式,因为文档中说只有一个窗口可以为指针输入注册自己。所以我不希望我的应用程序占用这样的资源

第三个解决方案很好,但我无法拦截metro应用程序或启动面板的触摸


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

你有没有找到解决办法?如果是这样的话,如果你能分享就太好了!我也有同样的问题。不幸的是,仍然没有。目前我正在使用挂钩,但正如我之前所说的,我无法拦截商店应用程序的触摸输入。Windows 10也是如此。@YasharBahman,我终于找到了实现这一点的方法——我正在使用HID输入技术从触摸屏数字化仪获取HID消息,然后对其进行解析,以计算当前有多少个联系人处于活动状态。因此,当此计数达到预定义值时,我可以运行一个操作。有趣!这是有道理的,但既然您使用的是hid,我想这意味着您可以获取输入的副本,但无法拦截它,对吗?也就是说,无法阻止触摸?是的,此方法不允许阻止触摸消息到达原始应用程序。但它可能没问题,因为通常的应用程序在3个或更多的触摸屏上没有任何功能。