你好 @Detach Ryan ,
感谢你的反馈。
直接回答你的问题:目前没有受支持的方式,让用户模式下的第三方应用在拦截、修改并重新注入触控输入的同时,仍能与高权限系统应用交互。要实现这种级别的控制,需要系统级组件(例如驱动程序或受信任的服务)。
Windows 对真实硬件触控和通过 InjectTouchInput 生成的合成触控有严格的区分。像 RegisterPointerInputTarget、RegisterTouchHitTestingWindow 和 RegisterRawInputDevices 这类 API 可以帮助应用观察或影响触控路由,但它们并不能让第三方应用在系统介入后完全接管或重放整个触控数据流。
你的 RegisterPointerInputTarget 方案在初期是可行的,因为你的应用可以先接收到指针消息。但一旦将触控重新注入系统,这些输入就会被标记为合成输入,此时 UIPI 会阻止它们与 TabTip 等高权限系统组件进行交互。这是有意的设计,普通的用户模式应用无法绕过。
你观察到的 Chrome 与通知中心的行为有所不同,因为那是基于真实的硬件触控。Windows 能够识别这是系统边缘手势,并从应用中收回控制权,这种行为只有操作系统本身才能做到。
希望这能对你有所帮助!如果我的回答对你有帮助,也欢迎按照这里的指引进行操作,让遇到同样问题的其他人也能受益: https://learn.microsoft.com/zh-cn/answers/support/accept-answer