首页 > 解决方案 > (如何)使用 `hSource` 句柄获取有关 `TOUCINPUT` 源设备的附加信息?

问题描述

我在我的 c# windows 应用程序上挂钩 windows 触摸事件,以便允许来自多个触摸屏的输入。我的问题是,我不仅希望能够在运行时区分不同的设备,我还想知道在以前的系统启动会话中设备提供了什么输入。问题是系统似乎hSource在启动时为每个设备提供了唯一的句柄。

在微软文档中说hSource

源输入设备的设备句柄。触摸输入提供程序在运行时为每个设备提供一个唯一的提供程序。

这激发了一个想法,hSource它不仅仅是唯一的标识符。但是我仍然想知道是否有一种方法可以获取有关具有给定 id 的设备的附加信息,最好是每个设备都是唯一的,并且在不同的系统启动会话中是一致的。

我已经尝试将此句柄视为文件句柄并使用GetFileInformationByHandle,但令人惊讶的是(这是自嘲的)没有成功。

任何帮助表示赞赏,尤其是负面的(即,您是对的,至少使用 windows touch api 是不可能的)。

标签: windowswinapitouch

解决方案


我可以使用句柄获取有关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();
}

请参阅TOUCHINPUT结构GetRawInputDeviceInfo


推荐阅读