au3如何判断一台电脑是否双显卡。
如题,求大神赐教,感激不尽! 回复 6# lxwlxwayy注册表的以前写过.... 现在开源吧
首先百度中搜索SetupAPI,了解作用。
MSDN中查询具体函数使用方法。
论坛中搜索SetupAPI,找到P版文章中封装好的UDF。
使用SetupAPI系列函数枚举显卡设备,判断个数。
#include <SetupApi.au3>
#include <array.au3>
Local $aryInfo
Local $aryDisplay
Local $aryNetwork
Local $aryChipset
Local $aryAudio
$aryDisplay = 0
$aryNetwork = 0
$aryChipset = 0
$aryAudio = 0
FindDeviceRecur(_CM_Locate_DevNode(""))
; This is what you want.
_ArrayDisplay($aryDisplay)
Func FindDeviceRecur($hDevInst)
$aChild = _CM_Enumerate_Children($hDevInst)
For $i = 1 To $aChild
$hDevInst = _CM_Locate_DevNode($aChild[$i])
$Class = _CM_Get_DevNode_Registry_Property($hDevInst, $CM_DRP_CLASS)
$sDescr = _CM_Get_DevNode_Registry_Property($hDevInst, 1)
$Version = Get_Driver_Version($hDevInst)
_2ArrayAdd($aryInfo, $Class & "|" & $sDescr)
If $Class = "Display" Then
;MsgBox(0,"","显卡型号:" & $sDescr & @CRLF & @CRLF & "驱动版本:" & $Version)
_2ArrayAdd($aryDisplay,$sDescr & "|" & $Version)
EndIf
If $Class = "Net" Then
;MsgBox(0,""," 网卡型号:" & $sDescr & @CRLF & @CRLF & "驱动版本:" & $Version)
_2ArrayAdd($aryNetwork,$sDescr & "|" & $Version)
EndIf
If $Class = "Processor" Then
;MsgBox(0,"","处理器:" & $sDescr & @CRLF & @CRLF & "驱动版本:" & $Version)
_2ArrayAdd($aryChipset,$sDescr & "|" & $Version)
EndIf
If $Class = "Media" Then
;MsgBox(0,"","声卡" & $sDescr & @CRLF & @CRLF & "驱动版本:" & $Version)
_2ArrayAdd($aryAudio,$sDescr & "|" & $Version)
EndIf
;此处只是为了取显卡的信息,所以加了判断,去掉可以取所有硬件驱动版本信息
FindDeviceRecur($hDevInst)
Next
EndFunc
Func _2ArrayAdd(ByRef $ary, $Data)
Local $iLength = UBound($ary) + 1
Local $DataList = StringSplit($Data, "|")
If IsArray($DataList) Then
ReDim $ary[$iLength]
$ary[$iLength - 1] = $DataList
$ary[$iLength - 1] = $DataList
EndIf
Return $ary
EndFunc
Func Get_Driver_Version($hDevInst)
$ClassGUID = _CM_Get_DevNode_Registry_Property($hDevInst, 10)
If $ClassGUID = "" Then Return "Unknown"
If @OSArch = "X86" Then
$Reg = "HKLM\SYSTEM\ControlSet001\Control\Class\"
Else
$Reg = "HKLM64\SYSTEM\ControlSet001\Control\Class\"
EndIf
$Version = RegRead($Reg & $ClassGUID, "DriverVersion")
If $Version = "" Then
Return "Unknown"
Else
Return $Version
EndIf
EndFunc
学习下{:face (427):} 注册表吗{:face (394):} 注册表吗{:face (394):}
来个可查ven代码对应厂商名称beta版(不含源码,献给装机人士)
回复 8# veket_linux
如果添加devid的搜索就更好了 回复 8# veket_linux
你的本子设备太多了 本来就是beta给台机 用限制 10个设备 学习。。。。。。。。。。。 感谢开源,此帖应该已经完结了吧 这几天有点忙,一直没有来看帖子,感谢各位大大倾囊相授,感激不尽。待我测试,如需帮助还望各位不厌其烦不吝赐教!
页:
[1]