xymc 发表于 2017-6-28 20:30:45

如何获取物理网卡的IP地址(已解决)

本帖最后由 xymc 于 2017-6-28 21:52 编辑

有一个物理网卡,本地连接,也有可能是本地连接2/3
然后装了虚拟机后多了一个VMware Network Adapter VMnet1和VMware Network Adapter VMnet8
MsgBox (0,0,$@IPAddress1)出来的有些机是物理网卡的IP,有些机出来的是虚拟网卡的IP,
怎么样可以准确获取到物理网卡的内网IP?


Local $sNetInfo = ""
;查询本机网卡信息
Local $oWMI = ObjGet("winmgmts:\\.\root\cimv2")
Local $colNet= $oWMI.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")
Local $oNet,$colConfig

For $oNet In $colNet
      If $oNet.NetConnectionStatus == 4 Or $oNet.NetConnectionStatus == 5 Then ContinueLoop      ;排除非活动状态的网卡
      If $oNet.NetConnectionID == "" Or StringInStr($oNet.name,"virtual") Then ContinueLoop      ;排除虚拟网卡
      $sNetInfo &= $oNet.NetConnectionID & @CRLF
Next
;MsgBox(0,"全部",$sNetInfo)
If $sNetInfo <> "" Then
        Local $text_sNetInfo = StringStripWS($sNetInfo, 3);删除左右空白字符
        $iPid = Run('ipconfig /all', @SystemDir, 0, 0x2)
        ProcessWait($iPid)
        $text = StdoutRead($iPid)
        $aRe = StringRegExp($text, '(?ism)^.*?(?:适配器|adapter)\h*' & $text_sNetInfo & ':.+?(?!:物理|physical )(?:地址|address).+?(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', 3)
        If @error Then
                        MsgBox(32, 'err', '此网卡不存在')
        Else
                        MsgBox(64, $text_sNetInfo & ' ip:', $aRe)
        EndIf
EndIf


功能是实现了,但不是很理想,速度慢,而且有时会返回此网卡不存在!希望有高手优化一下。

kk_lee69 发表于 2017-6-28 21:04:25

回复 1# xymc


    http://www.autoitx.com/forum.php?mod=viewthread&tid=53627&highlight=%CD%F8%BF%A8

xymc 发表于 2017-6-28 21:12:50

回复 2# kk_lee69

这个只是显示网卡信息的

kk_lee69 发表于 2017-6-28 21:23:52

回复 3# xymc
http://www.autoitx.com/forum.php?mod=viewthread&tid=30774&highlight=%CD%F8%BF%A8


    http://www.autoitx.com/search.php?searchid=206&orderby=lastpost&ascdesc=desc&searchsubmit=yes

怪了難不成現在回答問題 都還得包生孩子的??
這種網卡的問題 已經有很多源碼作品了吧

xymc 发表于 2017-6-28 21:35:01

回复 4# kk_lee69
帮我看看我那里哪里错了,2段分开是正常的,放一起就不行了

xymc 发表于 2017-6-28 21:40:10

找到问题了,是本地连接后面有空格

吕氏春秋 发表于 2018-9-21 16:27:51

楼主你好,我运行了一下,也是返回返回此网卡不存在,请问你说的本地连接后面有空格,是指网卡的名称后面带空格吗?
页: [1]
查看完整版本: 如何获取物理网卡的IP地址(已解决)