我正在编写 Windows 8 桌面应用程序,并希望它在用户用(例如)4 根手指点击屏幕时弹出。我发现了这个问题:
答案提供了 3 个解决方案。第一个对我不利,因为我想编写适用于每台 Win8 平板电脑的应用程序。
第二个(RegisterPointerInputTarget)效果很好(我的应用程序拦截了所有可能的触摸输入,即使在启动面板处于活动状态或 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 应用程序或开始面板的触摸。
有谁知道如何正确拦截 Windows 8 上的所有触摸输入?uiAccess=true 不是问题,因为我的应用程序将被签名。谢谢。