gpt4 book ai didi

c++ - 如何在 Windows 10 上使用带有 PT_PEN 的 InjectTouchInput() 从数字转换器注入(inject)笔输入

转载 作者:行者123 更新时间:2023-11-30 05:10:46 25 4
gpt4 key购买 nike

我在 Windows 10 上使用 InjectTouchInput() API 从单独的数字转换器注入(inject)触摸事件。这很好用(多点触控等)。有很多为此使用 API 的示例,即使用指针类型 PT_TOUCH,包括一个 from Microsoft。 ,因此根据我的需要自定义它们并不难。

但是,我还没有找到任何使用其他指针类型的示例,尤其是 PT_PEN - 当数字转换器给我笔输入时我需要它。 (我也对 PT_MOUSE 感兴趣,主要是为了避免必须使用 SendInput()mouse_event()。)

每当我使用 PT_PEN 调用 InjectTouchInput() 时,它都会失败并返回 ERROR_INVALID_PARAMETER。我已经尝试了很多字段组合来设置,但(到目前为止)没有任何效果。 MSDN文档没有描述PT_PEN要做什么(它没有描述太多PT_TOUCH,但至少有一个示例),所以很难知道哪些字段应该被设置,哪些字段应该被忽略,任何特定的操作顺序等等。我一直在网上搜索,但找不到任何例子PT_PEN 使用。

是否有人有示例代码或知道在哪里可以找到任何示例代码、有用文档位于何处的知识,或者知道 InjectTouchInput() 应该如何用于 PT_PEN (和 PT_MOUSE)?

最佳答案

事实证明InjectTouchInput()确实仅适用于触摸输入 - 不适用于笔、鼠标或通用指针。

你可能会说这很明显,因为你传递了一个 POINTER_TOUCH_INFO 的数组API 的条目,但由于 POINTER_TOUCH_INFO 的文档而引起混淆(以及所有后续文档)描述的内容主要是从解释他给出的内容的人那里看到的,而不是他试图设置的内容, POINTER_INFO (POINTER_TOUCH_INFO 中的第一个元素)可以指定 PT_POINTER 的指针类型, PT_TOUCH , PT_PEN , PT_MOUSE , 或 PT_TOUCHPAD ,所以很自然地会想到“等等,我可以注入(inject)所有这些不同类型的指针!

当然,所有指针类型,尽管有 POINTER_INFO通常,采用略有不同的参数。例如,有 orientationpressure对于 PT_TOUCH (在 POINTER_TOUCH_INFO 中),但是 tiltX , tiltY , rotation , 和 pressure对于 PT_PEN (在 POINTER_PEN_INFO 中);但由于指针类型始终是结构中的第一个字段,因此很容易确定哪些信息是相关的。

可以InjectTouchInput()POINTER_PEN_INFO条目而不是 POINTER_TOUCH_INFO那些?不,它不能 - 我试过了,以防万一它会起作用。

Microsoft 似乎错失了从一开始就使 API 更加通用并接受所有支持的指针类型,而不是仅限于触摸输入的机会。至少,笔式注入(inject)应该很简单,因为有一个 POINTER_PEN_INFO。结构(除了 POINTER_TOUCH_INFO 之外,我还没有找到其他指针类型的结构)。

中途 this thread从 2014 年开始提到“没有用于笔式注入(inject)的 [...] API”,此后情况没有改善,因此仍然需要用于笔式注入(inject)的驱动程序。话虽如此,Windows UI Automation API 显然可以注入(inject)所有指针类型(以及用于启动的游戏 handle ),但这仅在 Windows 10 周年纪念版中受支持(我还没有尝试过)。

关于c++ - 如何在 Windows 10 上使用带有 PT_PEN 的 InjectTouchInput() 从数字转换器注入(inject)笔输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com