newuser 发表于 2010-7-16 10:37:43

关于读网卡信息中的代码问题?

当获得第1块网卡信息后,对这句重新调整网卡的数量不是很理解:
$AdaptersInfo[$AdaptersInfo] += $AdaptersInfo ;网卡的数量?
大家能帮助讲解一下吗?#cs
编写本脚本收获:
对有”教训“的要特别注意
1.原作者没有使用$KeyValue变量表示注册表键名,书写繁琐且不易于代码版面清晰;
2.掌握了用RegEnumKey()枚举指定键;
#ce
#include <Array.au3>
$AdaptersInfo = _RegNetworkAdapterInfo();用_RegNetworkAdapterInfo()函数将所有网卡信息读到一个数组里
_ArrayDisplay($AdaptersInfo);将数组中的网卡信息用列表视图显示出来

Func _RegNetworkAdapterInfo()
      Local $AdaptersInfo;定义一个数组变量
      $AdaptersInfo = 0;定义网卡初始信息为空
                Dim $KeyValue="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"
      For $i = 1 To 50
                $Adapters = RegEnumKey($KeyValue, $i)
                                ;读取指定子键的名称,语法为RegEnumKey ( "键名", 序数 )
                If @error <> 0 Then ExitLoop;读取出错退出循环
                $IPAddress = RegRead($KeyValue & "\" & $Adapters, "IPAddress")
                                ;静态IP的地址
                $SubnetMask = RegRead($KeyValue & "\" & $Adapters, "SubnetMask")
                                ;静态IP的子网掩码
                $AdaptersInfo += 1 ;网卡的数量
                ReDim $AdaptersInfo
                                ;ReDim是调整已经存在数组的大小,网卡信息位于1维
                                ;UBound是返回数组纬度的大小,语法为UBound ( 数组 [, 维度] )
                $AdaptersInfo[$AdaptersInfo] += $AdaptersInfo ;网卡的数量
                                ;以上可不可以理解为$AdaptersInfo[$i]=$AdaptersInfo[$i]+$AdaptersInfo
                                ;$AdaptersInfo[$AdaptersInfo]=$AdaptersInfo[$AdaptersInfo]+$AdaptersInfo
                $AdaptersInfo[$AdaptersInfo] = $IPAddress ;IP的地址
                $AdaptersInfo[$AdaptersInfo] = $SubnetMask ;IP的掩码
      Next
      Return $AdaptersInfo
EndFunc   ;==>_RegNetworkAdapterInfo

ferelove 发表于 2010-7-16 14:16:10

本帖最后由 ferelove 于 2010-7-16 14:29 编辑

每读取一个子键它就+1,当循环结束(即是全部子键都枚举完时),也就是网卡的数量,一般情况下,每个子键代表一个网络设备,不过有些并不是真正的网卡,自己可以加以条件过滤,譬如IP是0.0.0.0的不要,等等。
当网卡未连接状态或者未分配到IP时,IPAddress都是0.0.0.0。
还有一些键值可以应用的,灵活处理。譬如EnableDHCP键值=1时,IP地址和掩码取DhcpIPAddress和DhcpSubnetMask。

之前用此方法获取网卡信息(IP地址、子网掩码、网关、DNS等等),在XP下挺好用的,在WIN7有某些键值已经不存在,故在WIN7下,此方法不理想咯。
页: [1]
查看完整版本: 关于读网卡信息中的代码问题?