Windows 10下如何区分同型号USB触摸屏并解决触摸错位问题
解决双同型号触摸屏重启触摸错位的设备区分方案
问题核心:两台同型号HID触摸屏重启后,实例特定ID会随机分配,导致multidigimon.exe写入的注册表触摸-显示映射失效,出现触摸错位。下面是几种可行的区分方法:
1. 用USB端口路径绑定设备
只要设备插在固定的物理USB口,Windows会给它分配固定的USB端口路径,不受实例ID变化影响,这是最可靠的区分方式。
操作步骤:
- 打开设备管理器,找到
人体学输入设备下的HID-compliant touch screen(两台设备分别操作) - 右键→属性→详细信息,下拉菜单选
父系或USB端口路径(不同系统版本命名可能有差异,找包含USB端口编号的项) - 记录每个设备对应的USB端口路径,比如
USB\VID_1FF7&PID_0F27\6&1a2b3c4d&0&1
脚本实现逻辑(PowerShell):
写个脚本在开机时自动更新注册表映射,确保触摸设备和对应屏幕绑定正确:
# 提前写好端口和显示设备的对应关系(把你记录的端口和显示路径填进去) $portDisplayMap = @{ "USB\VID_1FF7&PID_0F27\6&1a2b3c4d&0&1" = "\\?\DISPLAY#IVM1A3E#5&1778d8b3&1&UID260#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}" "USB\VID_1FF7&PID_0F27\6&5d4c3b2a&0&2" = "\\?\DISPLAY#IVM1A3E#5&1778d8b3&1&UID256#{e6f07b5f-ee97-4a90-b076-33f57bf4eaa7}" } # 遍历所有触摸设备 $touchDevices = Get-WmiObject Win32_PnPEntity | Where-Object { $_.PNPClass -eq "HIDClass" -and $_.Name -match "touch screen" } foreach ($dev in $touchDevices) { # 获取父USB设备的端口路径 $parentId = $dev.PNPDeviceID.Split("\")[0..1] -join "\" $parentDev = Get-WmiObject Win32_PnPEntity | Where-Object { $_.DeviceID -eq $parentId } $portPath = $parentDev.DeviceID # 构造注册表需要的键名 $instanceKey = $dev.PNPDeviceID.Replace("\", "#") $regKey = "20-\\?\$instanceKey#{4d1e55b2-f16f-11cf-88cb-001111000030}" # 更新注册表映射 if ($portDisplayMap.ContainsKey($portPath)) { Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Wisp\Pen\Digimon" -Name $regKey -Value $portDisplayMap[$portPath] -Type String } }
2. 结合HID集合编号区分
设备实例路径里的ColXX是HID集合编号,如果两台设备的这个编号不同,可以直接用它配合VID/PID区分;如果相同,还是得结合USB端口路径。
3. 固定USB端口
别随便换触摸屏插的USB口,保持物理端口固定,这样端口路径不会变,脚本就能稳定识别。
4. 脚本开机自启
把脚本存成.ps1文件,通过任务计划程序设置成系统启动后延迟5分钟执行,等所有设备加载完成再运行,避免获取不到设备信息。
内容的提问来源于stack exchange,提问作者usbpc102
相关产品推荐
相关产品推荐

