2

我的应用程序中已经有一个 WH_MOUSE_LL 挂钩,但鼠标和触摸板需要不同的行为。

我知道原始输入 API,但不知道如何将它与钩子一起使用:(

有什么建议么?

4

6 回答 6

4

应该和区分多个键盘设备一样。

于 2011-01-04T17:02:23.777 回答
2

拆卸一些触摸板驱动程序,看看它是如何工作的。这是唯一的方法,因为驱动程序可能使用不同的鼠标模拟方法。并且不要忘记为我的答案投票;)。

于 2011-01-04T16:55:32.600 回答
1

在你的情况下,很可能,原始输入会做。除了知道它在捕获输入但无法阻止它在捕获输入后进行的限制之外,我没有任何经验这意味着即使您捕获它们,其他应用程序也会发生击键和鼠标事件与原始输入。最后,这是我在国外论坛上学到的。

我已经建立了一种替代方法,它能够区分设备、拦截输入并防止此输入生成. 它是一个与设备过滤器驱动程序进行内部通信的 C 库。

我在 github 上有两个用于设备消歧的基本示例:

两个示例之间的主要区别在于,hardwareid 示例显示了如何获取设备硬件提供的标识符,包括供应商 id、产品 id,可能还有一些序列信息。问题是通常这些提供的信息不足以消除两个相同设备之间的歧义。它们恰好来自同一供应商,具有相同的型号,总而言之,相等但不相同。因此,持续消除歧义的是某种连接 ID,它可能会在重新连接时发生变化,但有助于在运行时消除歧义,这就是识别示例展示的方法。

我有一台 macbook,并且能够通过我的图书馆将我的魔术鼠标与我的触摸板(在训练营)区分开来。

更多文档在http://oblita.com/Interception

注意:目前图书馆有 10 个键盘和 10 个鼠标的限制。

于 2012-01-10T14:31:01.607 回答
0

我试过 cnPackRawInput 并且它工作正常。它有一个 KeyboardFromHandle 功能,我可以比较它是不是我的特殊键盘(例如 msr 设备、条形码扫描仪)。但我不知道它是否处理指针设备。反正你可以试试。如果它支持比你可以使用。

抱歉英语不好。

http://www.google.com/codesearch/p?hl=en#6CoJUlkQju4/trunk/cnvcl/Source/NonVisual/CnRawInput.pas&q=rawinput%20package:http://cnpack%5C.googlecode%5C.com&sa= N&cd=3&ct=rc

于 2011-01-04T18:59:44.070 回答
0

从任何不同的 USB 设备读取数据的非常简单的示例:http: //sourceforge.net/projects/libusbdotnet/

这个开源 C# 项目。模块Test_Bulk正是您想要区分 USB 设备和从中读取(写入)数据的内容。

于 2013-04-20T14:46:18.407 回答
0

如果您只想接收触摸板、鼠标或两者的输入,您可以使用原始输入来注册您有兴趣接收输入的设备。您只需要使用 RegisterRawInputDevices 函数注册以接收来自您感兴趣的设备的输入。此Microsoft 文档示例说明了如何为鼠标和键盘执行此操作。监听触摸板输入需要类似的方法。您将使用页面 0x0D 和用法 0x05。至于将此 API 与钩子一起使用,AbsoluteTouchEx存储库可以提供一些有关如何执行此操作的指导。

于 2020-06-02T21:32:31.340 回答