允许使用TouchInjection Windows 8+ API进行屏幕外触摸吗?

时间:2019-02-19 19:29:20

标签: windows winapi touch

我遇到的情况是需要将一些第三方封闭源Unity应用程序嵌入到我们自己的应用程序中。我正在注入一个DLL,该DLL从它们的swapchain中创建DX11共享纹理。这部分工作成功了。

另外,我想隐藏包装Unity应用程序的表单(您可以幸运地使用命令行设置其父句柄),以便我可以100%控制我们自己的应用程序中其纹理发生了什么变化(+,因此不会干扰我们自己应用的整体外观)。效果也很好,即使Unity表单完全不在屏幕上,我也可以毫无问题地获得纹理。

现在,我的问题是,该Unity应用程序需要与多点触控配合使用,并且经过大量的谷歌搜索/堆栈溢出读取后,我有点得出结论:没有办法(或我没有找到任何办法)编写有效的{{ 1}}消息仅适用于Windows中的一个窗口。 (以下事实得到了某种支持:您需要调用一个单独的WinApi函数,以根据WM_POINTER*消息的lParam中接收到的ID,来获取Pointer / Touch的所有数据)< / p>

因此,我使用的是TouchInjection Windows API(InitializeTouchInjectionInjectTouchInput)(有关Internet上这些API的信息充其量是误导,但实际上我解决了所有怪癖),并且效果很好如果Unity表单在屏幕上可见。或者换句话说,如果触摸位置在屏幕边界内。

现在终于出现了问题:当我为注入的触摸指定屏幕外坐标时,我收到一条WM_POINTER*系统错误消息。否则它将起作用。有没有办法在Windows中关闭此检查?还是有人以其他方式解决了这个问题?

(我们的应用程序不是最终用户,我们可以完全控制它在内部运行的环境,也可以在系统范围内进行修改。)

谢谢!

1 个答案:

答案 0 :(得分:0)

您不能关闭错误代码检查,因为它是函数内部的返回值,并且表示函数调用失败,然后函数返回或仅更改错误代码。如果可以禁用错误代码,那么函数调用的状态是什么?成功还是失败? 您需要手动检查坐标并检测要做什么。

相关问题