jd19970829 发表于 2011-2-6 22:57:40

怎么能够很方便的得到某个设备的所有硬件ID

本帖最后由 jd19970829 于 2011-2-7 17:37 编辑

如果我想得到某个设备的所有硬件ID,比如显示器吧。我用devcon.exe hwids monitor*这个工具这样就可以把显示器有关的所有硬件ID全部显示出来,而我看了P老大的使用SetupApi.au3进行某个硬件ID查找示例
#include <SetupApi.au3>
; 枚举系统中的所有鼠标设备:
Local $hDevs, $tDevInfo, $aMouse = []
$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "Mouse")
While _SetupDiEnumDeviceInfo($hDevs, $aMouse, $tDevInfo)
      $aMouse += 1
      $sDescr = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_DEVICEDESC)
      $sName = _SetupDiGetDeviceRegistryProperty($hDevs, $tDevInfo, $SPDRP_FRIENDLYNAME)
      If $sName <> "" Then $sDescr = $sName
      Redim $aMouse[$aMouse + 1]
      $aMouse[$aMouse] = $sDescr      ; 鼠标描述信息
      $aMouse[$aMouse] = _SetupDiGetDeviceInstanceID($hDevs, $tDevInfo) ; 设备范例ID
WEnd
; 枚举网卡只需把"Mouse"改为"Net",磁盘则对应DiskDrive,显卡对应Display。
_SetupDiDestroyDeviceInfoList($hDevs)
_Arraydisplay($aMouse)
我没有完全看懂,因为有好些函数我都不知道是做什么用的,还有它们的参数是什么意思,怎么得来,所以我想问问,有没有简单一点的函数能够像devcon.exe hwids monitor*这个工具这样,只带入需要查找的硬件中的某个字符串,比如说显示器是display\monitor,我只带入"monitor"这个参数就能返回所有的关于显示器的硬件ID条目。虽然我找到一个几乎能实现此功能的函数_CM_Get_Device_ID_List_Ex,但是还是有很多的局限,比如说我想得到显示器的硬件ID,只能带入display这个参数,而不能使用monitor这个参数,这样就会有其他一些问题,比如说我想得到显卡的硬件ID,而显卡的硬件ID是pci\****,但是PCI\***也包括了其他一些硬件,比如网卡或者其他的PCI设备,这样就得不到我需要的结果。

jd19970829 发表于 2011-2-7 17:38:24

等待版主的解答

gzh888666 发表于 2011-2-7 20:33:36

太深奥了,完全看不懂,等待高手!帮你顶一下!

jd19970829 发表于 2011-2-8 04:04:25

P老大,帮帮忙啊。
页: [1]
查看完整版本: 怎么能够很方便的得到某个设备的所有硬件ID