找回密码
 加入
搜索
查看: 1987|回复: 3

[系统综合] 获取物理显卡数量

[复制链接]
发表于 2014-10-26 21:16:01 | 显示全部楼层 |阅读模式
本帖最后由 q113960096 于 2014-10-26 21:54 编辑

现在很多笔记本电脑有双显卡,希望能够判断电脑物理显卡的数量,无从下手,有知道的还望提点一二谢谢!对了,要在PE环境下进行识别!!
发表于 2014-10-27 09:05:34 | 显示全部楼层

#include <SetupApi.au3>
#include <array.au3>
 
Local $aryInfo[1]
 
Local $aryDisplay[1][2]
Local $aryNetwork[1][2]
Local $aryChipset[1][2]
Local $aryAudio[1][2]
 
$aryDisplay[0][0] = 0
$aryNetwork[0][0] = 0
$aryChipset[0][0] = 0
$aryAudio[0][0] = 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[0]
                $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][2]
                $ary[$iLength - 1][0] = $DataList[1]
                $ary[$iLength - 1][1] = $DataList[2]
        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
发表于 2014-10-27 22:21:12 | 显示全部楼层
回复 2# MicroBlue


    把SetupApi.au3 交出来
发表于 2014-10-27 23:42:57 | 显示全部楼层
回复 3# yinbinly


    你搜论坛,一堆 setupapi.au3。你要是找不到,我再给你。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-20 20:55 , Processed in 0.079457 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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