c# - 从 C# IntPtr 获取设备信息

标签 c# raw-input

背景/免责声明: 我目前正在开发一个 C# 项目,该项目需要与 Microsoft 的原始输入 API 进行交互。我是一名 C# 开发人员,对原始输入 API“空间”完全陌生,并且对相关 API(即 Windows 窗体、user32.dll、Windows 编程)总体来说也是陌生的。

问题: 由于我的背景,我更喜欢通过 C# 托管包装器库使用原始输入 API;我选择了 SharpDX,但我对其他 C# 解决方案持开放态度。 我已经获得了原始输入,捕获键盘事件和代表键盘设备的 IntPtr。有没有办法通过此 IntPtr 引用找到有关设备的更多信息(例如 Guid、产品名称、设备名称等)?

到目前为止已经做了什么

  1. 通过 EventHandler 委托(delegate)和 SharpDX API 获取原始输入;获得设备的 IntPtr。
  2. 在过去的三天里,我用我平庸的搜索能力在互联网上进行了搜索;没有找到从 C# IntPtr 获取设备信息的 C# 托管方式(安全上下文)。

注意:虽然代码答案很有帮助,但我来这里不仅仅是为了“获取答案并运行”。只要可以通过一些 C# 托管的免费库或没有 C#“不安全”上下文来做到这一点;向我发送指向该库文档和该库主站点的链接以及一些一般指南就足够了。

最佳答案

理论上,是的,指针应该是对输入设备句柄的引用,因此您应该能够调用 GetRawInputDeviceInfo以获得所需的信息。

您必须自己调用此外部函数 (from KMoussa's comment) ,或在您选择的 C# 托管包装器中。

关于c# - 从 C# IntPtr 获取设备信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047722/

相关文章:

c# - 当值为 null 时将日期时间显示为 "00000000"

c# - 将文件扩展名与应用程序相关联

c# - ADO.NET Entity Framework 和 ASP.MVC 的组合有没有错?

python - 如何使用 Tkinter Entry 像 raw_input

Python raw_input 忽略换行符

c# - "Unexpected Response Code for Operation: 0"执行 Azure Table Storage 批量删除时

c# - MongoCursor<BsonDocument> 转换为 List 非常慢

c++ - 使用原始输入同时获取两只老鼠的数据

Python if 表达式无法正确处理原始输入

python - 尝试将原始输入与函数一起使用