找回密码
 加入
搜索
查看: 9125|回复: 17

[AU3基础] 如何提取多网卡的IP地址,并分类

[复制链接]
发表于 2013-4-18 21:09:31 | 显示全部楼层 |阅读模式
Windows IP Configuration





Ethernet adapter 本地连接 2:



        Connection-specific DNS Suffix  . : 

        IP Address. . . . . . . . . . . . : 10.185.122.122

        Subnet Mask . . . . . . . . . . . : 255.255.255.0

        Default Gateway . . . . . . . . . : 10.185.122.1



Ethernet adapter 本地连接:



        Connection-specific DNS Suffix  . : 

        IP Address. . . . . . . . . . . . : 192.168.1.1

        Subnet Mask . . . . . . . . . . . : 255.255.255.0

        Default Gateway . . . . . . . . . : 192.168.1.3
得到这样的结果
[本地连接 2]
IP=10.185.122.122
掩码255.255.255.0
网关=10.185.122.1

[本地连接]
IP=192.168.1.1
掩码=255.255.255.0
网关=192.168.1.3
发表于 2013-4-18 22:49:41 | 显示全部楼层
自己封装一个



#include <Array.au3>
$array = getip()
_ArrayDisplay($array)

Func getip()
        RunWait(@ComSpec & " /c " & "ipconfig /all>" & @TempDir & "\ip.txt", "", @SW_HIDE)
        Sleep(2000)
        Local $fp = FileOpen(@TempDir & "\ip.txt")
        Local $buf = FileRead($fp)
        Local $buf2 = ""
        FileClose($fp)
        Local $a[1] = [0];
        Local $i = StringInStr($buf, "IP Address")
        While $i <> 0
                $i = StringInStr($buf, "adapter")
                $buf = StringMid($buf, $i)
                
                $i = StringInStr($buf, ":")
                $buf2 = StringLeft($buf, $i-1)
                $buf2 = StringMid($buf2, StringLen("adapter")+1)
                _ArrayAdd($a, $buf2)
                $a[0] += 1
                
                $i = StringInStr($buf, "IP Address")
                $buf = StringMid($buf, $i)

                $i = StringInStr($buf, ":")
                $buf = StringMid($buf, $i + 1)

                $i = StringInStr($buf, "Subnet Mask")
                $buf2 = StringLeft($buf, $i - 1)
                _ArrayAdd($a, get($buf2))
                $a[0] += 1

                $i = StringInStr($buf, "Subnet Mask")
                $buf = StringMid($buf, $i)

                $i = StringInStr($buf, ":")
                $buf = StringMid($buf, $i + 1)

                $i = StringInStr($buf, "Default Gateway")
                $buf2 = StringLeft($buf, $i - 1)
                _ArrayAdd($a, get($buf2))
                $a[0] += 1

                $i = StringInStr($buf, "Default Gateway")
                $buf = StringMid($buf, $i)

                $i = StringInStr($buf, ":")
                $buf = StringMid($buf, $i + 1)

                $i = StringInStr($buf, @CR)
                $buf2 = StringLeft($buf, $i - 1)
                _ArrayAdd($a, get($buf2))
                $a[0] += 1

                $i = StringInStr($buf, "IP Address")
        WEnd
        Return $a
EndFunc

Func get(ByRef $str)
        If $str = "" Then Return ""
        Local $a = StringToASCIIArray($str)
        Local $i
        For $i = UBound($a) - 1 To 0 Step -1
                If ($a[$i] >= Asc('0') And $a[$i] <= Asc('9')) Or ($a[$i] = Asc('.')) Then
                        ;
                Else
                        _ArrayDelete($a, $i)
                EndIf
        Next
        Return StringFromASCIIArray($a)
EndFunc

本帖子中包含更多资源

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

×
发表于 2013-4-18 22:57:01 | 显示全部楼层
进一步测试   借助安装的vm虚拟机 把网络连接里 两个vm 的 开起来

本帖子中包含更多资源

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

×
 楼主| 发表于 2013-4-18 23:15:14 | 显示全部楼层
呵呵,不错,不错,学习了,谢谢
发表于 2013-4-19 07:46:08 | 显示全部楼层
学习,学习了,谢谢
发表于 2013-4-19 09:17:47 | 显示全部楼层
学习学习。学习学习。
发表于 2013-4-19 10:03:09 | 显示全部楼层
学习+收藏!
发表于 2013-4-19 11:14:03 | 显示全部楼层
学习,谢谢源码分享
发表于 2013-4-22 22:34:29 | 显示全部楼层

; 可以得到IP和网卡CLSID
Global Const $REG_Network_INTERFACE = 'HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces'

; 得到网卡显示名称
Global Const $REG_Network_Connection = 'HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}'



从这两个注册表项可得到你需要的东西,自由发挥即可
发表于 2013-4-23 06:41:34 | 显示全部楼层
代码学习了.
发表于 2013-4-23 12:02:32 | 显示全部楼层
这个我之前貌似研究过,回头我帮你找找!
发表于 2013-4-23 13:59:11 | 显示全部楼层
再来个 读注册表的

#include <Array.au3>
$a = MuliNetCard()
_ArrayDisplay($a)

Func MuliNetCard()
        Local $key = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network"
        Local $key1
        Local $array[1] = [0]
        Local $sub
        Local $sub2
        Local $val
        Local $name
        Local $i
        Local $j
        Local $keytcp = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces"
        Local $ip
        Local $mask
        Local $gateway

        $i = 1
        While True
                $sub = RegEnumKey($key, $i)
                If @error <> 0 Then ExitLoop
                $i += 1
                $val = RegRead($key & "\" & $sub, "Class")
                If $val = "net" Then ExitLoop
        WEnd
        $key1 = $key & "\" & $sub

        $i = 1
        While True
                $sub = RegEnumKey($key1, $i)
                If @error <> 0 Then ExitLoop
                $i += 1
                $j = 1
                $sub2 = ""
                While True
                        $sub2 = RegEnumKey($key1 & "\" & $sub, $j)
                        If @error <> 0 Then ExitLoop
                        $j += 1
                        If $sub2 = "Connection" Then ExitLoop
                WEnd
                If $sub2 = "Connection" Then
                        $name = RegRead($key1 & "\" & $sub & "\Connection", "Name")
                        _ArrayAdd($array, $sub)
                        _ArrayAdd($array, $name)
                        _ArrayAdd($array, "ip")
                        _ArrayAdd($array, "mask")
                        _ArrayAdd($array, "gateway")
                        $array[0] += 5
                EndIf
        WEnd

        For $i = 1 To $array[0] Step 5
                $ip = RegRead($keytcp & "\" & $array[$i], "IPAddress")
                $mask = RegRead($keytcp & "\" & $array[$i], "IPAutoconfigurationMask")
                $gateway = RegRead($keytcp & "\" & $array[$i], "DefaultGateway")
                $array[$i + 2] = $ip
                $array[$i + 3] = $mask
                $array[$i + 4] = $gateway
        Next
        Return $array
EndFunc
发表于 2013-4-23 14:25:07 | 显示全部楼层
不错,谢谢楼主分享
 楼主| 发表于 2013-4-25 17:35:17 | 显示全部楼层
win7下无效,不过我用的另外一种笨方式
发表于 2014-10-29 10:32:56 | 显示全部楼层
我怎么显示是0
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 13:11 , Processed in 0.085015 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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