背景/免责声明: 我目前正在开发一个 C# 项目,该项目需要与 Microsoft 的原始输入 API 进行交互。我是一名 C# 开发人员,对原始输入 API“空间”完全陌生,并且对相关 API(即 Windows 窗体、user32.dll、Windows 编程)总体来说也是陌生的。
问题: 由于我的背景,我更喜欢通过 C# 托管包装器库使用原始输入 API;我选择了 SharpDX,但我对其他 C# 解决方案持开放态度。 我已经获得了原始输入,捕获键盘事件和代表键盘设备的 IntPtr。有没有办法通过此 IntPtr 引用找到有关设备的更多信息(例如 Guid、产品名称、设备名称等)?
到目前为止已经做了什么
- 通过 EventHandler 委托(delegate)和 SharpDX API 获取原始输入;获得设备的 IntPtr。
- 在过去的三天里,我用我平庸的搜索能力在互联网上进行了搜索;没有找到从 C# IntPtr 获取设备信息的 C# 托管方式(安全上下文)。
注意:虽然代码答案很有帮助,但我来这里不仅仅是为了“获取答案并运行”。只要可以通过一些 C# 托管的免费库或没有 C#“不安全”上下文来做到这一点;向我发送指向该库文档和该库主站点的链接以及一些一般指南就足够了。
最佳答案
理论上,是的,指针应该是对输入设备句柄的引用,因此您应该能够调用 GetRawInputDeviceInfo以获得所需的信息。
您必须自己调用此外部函数 (from KMoussa's comment) ,或在您选择的 C# 托管包装器中。
关于c# - 从 C# IntPtr 获取设备信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047722/