[已解决]如何获取指定名称的网卡的IP地址?
本帖最后由 xia_xia 于 2016-2-26 19:41 编辑比如,在机器中,有一固定网络连接:“无线网络连接”那么如何获取这个连接的IP地址呢? 本帖最后由 afan 于 2016-2-24 19:39 编辑
活动的外网ip应该只有一个吧,直接在网页查看是不是你要的,比如查看 回复 1# xia_xia
这样试试:
#include <AutoItConstants.au3>
#include <Array.au3>
#include <JY_IPget.au3>
Global Const $__WinINet_sDLL = "wininet.dll"
Global $__WinINet_hDLL = $__WinINet_sDLL
Global $wangka1, $mac, $DNS1
If _WinINet_InternetGetConnectedState() Then
MsgBox(0, True, "己联网!!!",3)
_WinINet_InternetGetConnectedStateaa()
Else
MsgBox(0, False, "断网!!!",5)
EndIf
Exit
Func _WinINet_InternetGetConnectedState()
Local $tFlags = DllStructCreate("dword")
Local $avResult = DllCall($__WinINet_hDLL,"bool", "InternetGetConnectedState", "ptr", DllStructGetPtr($tFlags),"dword", 0 )
If @error Then Return SetError(1, 0, False)
Return SetError(0, DllStructGetData($tFlags, 1), $avResult <> 0)
EndFunc ;==>_WinINet_InternetGetConnectedState
Func _WinINet_InternetGetConnectedStateaa()
WMI()
For $i = 0 To UBound($wangka1) - 1
For $o = 0 To UBound($mac) - 1
Local $Chua4 = StringTrimLeft($DNS1[$o], 1)
Next
Next
$IP = JY_ipGet()
MsgBox(0, "网络地址:","外网IP地址: "&$IP &@CRLF &"无线网络IP:"&$Chua4)
EndFunc ;==>
Func WMI()
Local $dnsa1
$sMesStr = ""
$net = ""
$oLocator = ObjCreate("WbemScripting.SWbemLocator")
$oService = $oLocator.ConnectServer
$oClassSet = $oService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")
For $oClass In $oClassSet
If @error Then ExitLoop
$sMesStr = $sMesStr & "连接名:“" & $oClass.NetConnectionID() & "”" & @CRLF & _
"网卡名: “" & $oClass.Name & "”" & @CRLF
Next
$oClassSet = ""
$oClass = ""
$oService = ""
$oLocator = ""
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0", "WQL", 0x10 + 0x20)
For $objItem In $colItems
;"网卡名:" & $objItem.Description & "”" & @CRLF & _
If @error Then ExitLoop
$net = $net & "ip地址: “:" & $objItem.IPAddress(0) & "”" & @CRLF & _
"mac地址: “" & $objItem.MACAddress & "”" & @CRLF & _
"首选dns: “:" & $objItem.DNSServerSearchOrder(0) & "”" & @CRLF ;& _
Next
$wangka1 = StringRegExp($sMesStr, "(?<=网卡名: “)[^”]+", 3)
$DNS1 = StringRegExp($net, "(?<=首选dns: “)[^”]+", 3)
$mac = StringRegExp($net, "(?<=mac地址: “)[^”]+", 3)
EndFunc ;==>WMI 试试WMI,似乎可以再简化$Net_AdapterName = "无线网络连接";网络连接名称
$Net_IPaddress ="";IP
$adapter_index = "";网卡唯一标示索引
$objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
$Net_adapter = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter where Netenabled = true")
If IsObj($Net_adapter) Then
For $objItem1 In $Net_adapter
If $objItem1.netconnectionid = $Net_AdapterName Then $adapter_index = $objItem1.index;Win32_NetworkAdapter 获取网络连接名称为XX的唯一标示索引
Next
EndIf
$Net_adapterconfig = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled = True")
If IsObj($Net_adapterconfig) Then
For $objItem2 In $Net_adapterconfig
If $objItem2.index =$adapter_index Then $Net_IPaddress = $objItem2.IPAddress(0)
Next
EndIf
MsgBox(0,$Net_AdapterName,$Net_IPaddress) 谢谢,虽然看的不是太明白,但是能用了,很好使。谢谢qqgghh1。
页:
[1]