windows - (如何)使用 `hSource` 句柄获取有关 `TOUCINPUT` 源设备的附加信息?
问题描述
我在我的 c# windows 应用程序上挂钩 windows 触摸事件,以便允许来自多个触摸屏的输入。我的问题是,我不仅希望能够在运行时区分不同的设备,我还想知道在以前的系统启动会话中设备提供了什么输入。问题是系统似乎hSource
在启动时为每个设备提供了唯一的句柄。
在微软文档中说hSource
是
源输入设备的设备句柄。触摸输入提供程序在运行时为每个设备提供一个唯一的提供程序。
这激发了一个想法,hSource
它不仅仅是唯一的标识符。但是我仍然想知道是否有一种方法可以获取有关具有给定 id 的设备的附加信息,最好是每个设备都是唯一的,并且在不同的系统启动会话中是一致的。
我已经尝试将此句柄视为文件句柄并使用GetFileInformationByHandle,但令人惊讶的是(这是自嘲的)没有成功。
任何帮助表示赞赏,尤其是负面的(即,您是对的,至少使用 windows touch api 是不可能的)。
解决方案
我可以使用句柄获取有关
TOUCHINPUT
源设备的其他信息吗?hSource
您可以使用GetRawInputDeviceInfo
以下方式获取其他信息:
RID_DEVICE_INFO info;
ZeroMemory(&info, sizeof(RID_DEVICE_INFO));
UINT size = 0;
if (GetRawInputDeviceInfo(touchInput.hSource, RIDI_DEVICEINFO, &info, &size)) {
}
else {
DWORD err = GetLastError();
}
推荐阅读
- arrays - 快速分组建模数组数据
- python - Django get_absolute_url() 将用户返回到主页
- firebase - 在命令提示符下使用 firebase 项目 ID
- mongodb - 如何合并 mongo 内联文档
- python - Python3-pip 安装:http://fr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 gcc-7 amd64 7.3.0-27ubuntu1~18.04 无法访问
- hapijs - 处理 CRUD 测试的最佳方法?
- java - How to release a guava cache object
- c++ - 从 JSON 像 DSL 到 qml 的转换
- reactjs - 如何在使用 withformik 和 antd 组件时调用 OnChange 函数?
- python - 如何确定多行 python 命令的位置(警告)?