找回密码
 加入
搜索
查看: 4202|回复: 13

[系统综合] au3如何判断一台电脑是否双显卡。

 火.. [复制链接]
发表于 2014-10-8 17:50:02 | 显示全部楼层 |阅读模式
如题,求大神赐教,感激不尽!
发表于 2014-10-10 23:08:35 | 显示全部楼层
回复 6# lxwlxwayy
注册表的以前写过.... 现在开源吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-10-9 21:46:10 | 显示全部楼层
首先百度中搜索SetupAPI,了解作用。
MSDN中查询具体函数使用方法。
论坛中搜索SetupAPI,找到P版文章中封装好的UDF。
使用SetupAPI系列函数枚举显卡设备,判断个数。
发表于 2014-10-10 07:36:36 | 显示全部楼层

#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-10 19:32:15 | 显示全部楼层
学习下
发表于 2014-10-10 19:33:27 | 显示全部楼层
注册表吗
发表于 2014-10-10 19:33:51 | 显示全部楼层
注册表吗
发表于 2014-10-10 23:26:58 | 显示全部楼层

来个可查ven代码对应厂商名称beta版(不含源码,献给装机人士)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-10-11 21:25:16 | 显示全部楼层
回复 8# veket_linux


    如果添加devid的搜索就更好了
发表于 2014-10-12 17:05:02 | 显示全部楼层
回复 8# veket_linux

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-10-12 17:20:58 | 显示全部楼层
你的本子设备太多了 本来就是beta给台机 用  限制 10个设备
发表于 2014-10-13 09:07:48 | 显示全部楼层
学习。。。。。。。。。。。
发表于 2014-10-13 14:33:24 | 显示全部楼层
感谢开源,此帖应该已经完结了吧
 楼主| 发表于 2014-10-14 14:19:41 | 显示全部楼层
这几天有点忙,一直没有来看帖子,感谢各位大大倾囊相授,感激不尽。待我测试,如需帮助还望各位不厌其烦不吝赐教!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 08:46 , Processed in 0.129073 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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