|
本帖最后由 jd19970829 于 2011-2-7 17:37 编辑
如果我想得到某个设备的所有硬件ID,比如显示器吧。我用devcon.exe hwids monitor*这个工具这样就可以把显示器有关的所有硬件ID全部显示出来,而我看了P老大的使用SetupApi.au3进行某个硬件ID查找示例
#include <SetupApi.au3>
; 枚举系统中的所有鼠标设备:
Local $hDevs, $tDevInfo, $aMouse[1][2] = [[0]]
$hDevs = _SetupDiGetClassDevs($DIGCF_PRESENT, "Mouse")
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
; 枚举网卡只需把"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设备,这样就得不到我需要的结果。 |
|