如何获取物理网卡的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
功能是实现了,但不是很理想,速度慢,而且有时会返回此网卡不存在!希望有高手优化一下。 回复 1# xymc
http://www.autoitx.com/forum.php?mod=viewthread&tid=53627&highlight=%CD%F8%BF%A8 回复 2# kk_lee69
这个只是显示网卡信息的 回复 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
怪了難不成現在回答問題 都還得包生孩子的??
這種網卡的問題 已經有很多源碼作品了吧 回复 4# kk_lee69
帮我看看我那里哪里错了,2段分开是正常的,放一起就不行了 找到问题了,是本地连接后面有空格 楼主你好,我运行了一下,也是返回返回此网卡不存在,请问你说的本地连接后面有空格,是指网卡的名称后面带空格吗?
页:
[1]