找回密码  加入

AUTOIT CN

搜索
查看: 100|回复: 1

[系统综合] [已解决]请教如何获取光驱的设备实例路径(ID)?

[复制链接]
发表于 2022-1-10 23:09:12 | 显示全部楼层 |阅读模式
本帖最后由 smooth 于 2022-1-11 09:19 编辑

以下代码可以获取磁盘设备的设备实例ID,但是无法获取到光驱的设备实例ID,现在银行的U盾,都是做成CD-ROM的形式,比如浦发银行的U盾,用下面的代码就搞不到它的设备实例ID。
在SetupApi.au3中搜索了一下关于CD-ROMM的函数,英文不好实在是看不太懂,不知道是否可以将下面的代码改造一下,用来获取光驱的设备实例ID?
        
#include <SetupApi.au3>
  Local $hDevs, $tDevInfo, $aMouse[1][2] = [[0]]
  $hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "DiskDrive")
  While _SetupDiEnumDeviceInfo($hDevs, $aMouse[0][0], $tDevInfo)
   $aMouse[0][0] += 1
   $sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_DEVICEDESC)
   $sName = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_FRIENDLYNAME)
   If $sName <> "" Then $sDescr = $sName
   ReDim $aMouse[$aMouse[0][0] + 1][2]
   $aMouse[$aMouse[0][0]][0] = $sDescr ; 磁盘描述信息
   $aMouse[$aMouse[0][0]][1] = _SetupDiGetDeviceInstanceId($hDevs, $tDevInfo) ; 设备范例ID
  WEnd
  ; 枚举网卡只需把"DiskDrive"改为"Net",鼠标则对应Mouse,显卡对应Display。
  _SetupDiDestroyDeviceInfoList($hDevs)
  Local $dFindDevs = ""
  For $i = 1 To $aMouse[0][0]
   If $aMouse[$i][1] = "USBSTOR\DISK&VEN_&PROD_USB_DISK_3.0&REV_PMAP\070B874E1FC19B55&0" Then
    $dFindDevs = $aMouse[$i][1]
    ExitLoop
   EndIf
  Next


 楼主| 发表于 2022-1-11 09:18:44 | 显示全部楼层
解决了,$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "CDROM"),即可!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2022-1-28 05:06 , Processed in 0.140625 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表