【发布时间】:2019-02-19 19:29:20
【问题描述】:
我有一种情况,我需要将一些第 3 方闭源 Unity 应用程序嵌入到我们自己的应用程序中。我正在注入一个 DLL,它从它们的交换链创建一个 DX11 共享纹理。这部分有效并且完成了。
此外,我想隐藏包裹 Unity 应用程序的表单(幸运的是,您可以使用命令行设置它们的父句柄),这样我就可以 100% 控制在我们自己的应用程序中它的纹理会发生什么(+ 所以它不会干扰我们自己的应用程序的整体外观)。这也很好用,即使 Unity 表单完全不在屏幕上,我也可以毫无问题地获得纹理。
现在我的问题是,这个 Unity 应用程序需要与多点触控一起使用,经过相当多的谷歌搜索/堆栈溢出阅读后,我有点得出结论,没有办法(或者我没有找到任何办法)来编写有效的 @987654323 @ 消息仅适用于 Windows 中的一个窗口。 (这有点支持您需要调用单独的 WinApi 函数以根据在 lParam 的 WM_POINTER* 消息中收到的指针/触摸的 ID 获取所有数据)
所以我使用的是 TouchInjection Windows API(InitializeTouchInjection 和 InjectTouchInput)(有关这些 API 的信息在互联网上具有误导性,但我实际上解决了他们所有的怪癖),如果 Unity 表单它工作正常在屏幕上可见。或者换句话说,如果触摸位置在屏幕边界内。
现在终于出现了问题:当我为注入的触摸指定屏幕外坐标时,我收到ERROR_INVALID_PARAMETER (87 / 0x57) 系统错误消息。否则它工作。有没有办法在 Windows 中关闭此检查?或者任何人在其他方式之前解决了这个问题?
(我们的应用程序不是最终用户应用程序,我们可以完全控制它在其中运行的环境,系统范围的修改也可以。)
提前致谢!
【问题讨论】: