1、通过CMD获取:
程序代码
#include <Array.au3>
$aArray = _GetMACAddress()
_ArrayDisplay($aArray)
Func _GetMACAddress()
local $sText, $iPID
$iPID = Run(@ComSpec & " /c ipconfig /all", '', @SW_HIDE, 6)
While 1
$sText &= StdoutRead($iPID)
If @error Then ExitLoop
WEnd
Return StringRegExp($sText, "(?s)(?i)([\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2})", 3)
EndFunc
2、通过WMI获取本机活动网卡的MAC地址
程序代码
#include <Array.au3>
$array = _GetMACAddress()
_ArrayDisplay($array)
Func _GetMACAddress()
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $strComputer = "localhost"
Local $objWMIService,$colItems,$ret[2]
$objWMIService = ObjGet("winmgmts:\\" & $strComputer& "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapter ")
For $colItem In $colItems
If $colItem .NetConnectionStatus = 2 Then
$ret[0]= $colItem .MACAddress
$ret[1]=$colItem .Name
EndIf
Next
Return $ret
EndFunc
3、通过API获取本机MAC地址
程序代码
MsgBox(64,"mac",_GetMAC(@IPAddress1))
Func _GetMAC ($sIP)
Local $MAC,$MACSize
Local $i,$s,$r,$iIP
$MAC = DllStructCreate("byte[6]")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize,1,6)
$r = DllCall ("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
$iIP = $r[0]
$r = DllCall ("iphlpapi.dll", "int", "SendARP","int", $iIP,"int", 0,"ptr", DllStructGetPtr($MAC),"ptr", DllStructGetPtr($MACSize))
$s = ""
For $i = 0 To 5
If $i Then $s = $s & ":"
$s = $s & Hex(DllStructGetData($MAC,1,$i+1),2)
Next
Return $s
EndFunc
![程序代码](http://www.lunhui.net.cn/p_w_picpaths/code.gif)
#include <Array.au3>
$aArray = _GetMACAddress()
_ArrayDisplay($aArray)
Func _GetMACAddress()
local $sText, $iPID
$iPID = Run(@ComSpec & " /c ipconfig /all", '', @SW_HIDE, 6)
While 1
$sText &= StdoutRead($iPID)
If @error Then ExitLoop
WEnd
Return StringRegExp($sText, "(?s)(?i)([\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2}\-[\w|\d]{2})", 3)
EndFunc
2、通过WMI获取本机活动网卡的MAC地址
![程序代码](http://www.lunhui.net.cn/p_w_picpaths/code.gif)
#include <Array.au3>
$array = _GetMACAddress()
_ArrayDisplay($array)
Func _GetMACAddress()
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $strComputer = "localhost"
Local $objWMIService,$colItems,$ret[2]
$objWMIService = ObjGet("winmgmts:\\" & $strComputer& "\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapter ")
For $colItem In $colItems
If $colItem .NetConnectionStatus = 2 Then
$ret[0]= $colItem .MACAddress
$ret[1]=$colItem .Name
EndIf
Next
Return $ret
EndFunc
3、通过API获取本机MAC地址
![程序代码](http://www.lunhui.net.cn/p_w_picpaths/code.gif)
MsgBox(64,"mac",_GetMAC(@IPAddress1))
Func _GetMAC ($sIP)
Local $MAC,$MACSize
Local $i,$s,$r,$iIP
$MAC = DllStructCreate("byte[6]")
$MACSize = DllStructCreate("int")
DllStructSetData($MACSize,1,6)
$r = DllCall ("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
$iIP = $r[0]
$r = DllCall ("iphlpapi.dll", "int", "SendARP","int", $iIP,"int", 0,"ptr", DllStructGetPtr($MAC),"ptr", DllStructGetPtr($MACSize))
$s = ""
For $i = 0 To 5
If $i Then $s = $s & ":"
$s = $s & Hex(DllStructGetData($MAC,1,$i+1),2)
Next
Return $s
EndFunc
转载于:https://blog.51cto.com/shenyaoyuan/202139