飞越星海 发表于 2011-9-4 10:33:43

如何获取物理地址(已解决,不知道怎么设置)

本帖最后由 飞越星海 于 2011-9-9 10:49 编辑

本人现在正在学习中,对很多东西都是不懂,现在想写几个输出电脑物理地址的代码来也不行,只好向大家求助!!!也让我好参考参考!!!大家一起来学习,一起进步!!!谢谢!!!

最后结果,虽然不是自己写出来的,但总是学到了一些知识!!!$sip=@IPAddress1;获取本机ip
If $sip="0.0.0.0" Then $sip=@IPAddress2;获取本机ip
$MAC = _GetMAC($sip);通过IP获取地址
MsgBox(0,"IP2地址:"&$sip,"MAC3地址:"&$MAC)
Func _GetMAC($sIP)
      Local $MAC, $MACSize, $i, $s, $r, $iIP
      $MAC = DllStructCreate("byte")
      $MACSize = DllStructCreate("int")
      DllStructSetData($MACSize, 1, 6)
      $r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
      $iIP = $r
      $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   ;==>_GetMAC10楼的方法:$objWMIService = objget("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For $objItem in $colItems
      If StringLeft($objItem.MACAddress,2) = 00 Then $mac = $objItem.MACAddress
Next
MsgBox(0,0,$mac)用连接号代替冒号方法:MsgBox(0,"","你的mac地址:   "&StringReplace($mac,":","-"))

dyd 发表于 2011-9-4 10:40:48

电脑物理地址?MAC?

飞越星海 发表于 2011-9-4 10:42:02

回复 2# dyd


    对啊!!就是这个!!!我想用记事本输出!!!

arkhe 发表于 2011-9-4 13:48:05

Func _GetMAC($sIP)
      Local $MAC, $MACSize, $i, $s, $r, $iIP
      $MAC = DllStructCreate("byte")
      $MACSize = DllStructCreate("int")
      DllStructSetData($MACSize, 1, 6)
      $r = DllCall("Ws2_32.dll", "int", "inet_addr", "str", $sIP)
      $iIP = $r
      $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   ;==>_GetMAC请线搜索下论坛。。。。有关MAC地址的很多

dyd 发表于 2011-9-4 15:45:14

回复 3# 飞越星海


    这个在论坛里有很多例子,自己找下吧

飞越星海 发表于 2011-9-4 16:47:53

回复 4# arkhe


    好滴,谢谢!!!

飞越星海 发表于 2011-9-4 16:48:47

回复 5# dyd


    还没有学会使用论坛搜索工具啊,就想着百度,谷歌、、、

58fly 发表于 2011-9-4 20:45:37

其实可以用@ADDADDRSS

hzxymkb 发表于 2011-9-4 22:22:02

回复 7# 飞越星海


   你第一次上论坛?

qqgghh1 发表于 2011-9-5 10:00:25

API :用4L的
WMI:$objWMIService = objget("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
$colItems = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For $objItem in $colItems
        If StringLeft($objItem.MACAddress,2) = 00 Then $mac = $objItem.MACAddress
Next
MsgBox(0,0,$mac)-----------------------------------------------------------------------------
经过我在近1W台电脑上执行的结果来看,API比WMI更准确点。不过这两种方式都不是100%。使用DOS命令ipconfig/all >mac.txt 然后分析txt档案字符串是最准确的。(如果能处理好系统语言版本问题,可以说是100%的)

如果使用规模小且电脑客户端环境不复杂的话,用4L的是最好的。

gapkiller 发表于 2011-9-5 10:31:53

win7有自带的工具, 可同时获得Wlan和Lan的mac地址
getmac.exe

飞越星海 发表于 2011-9-5 22:43:13

回复 9# hzxymkb


    也不是第一次上论坛,只是对这个搜索的引擎不是很留意!!!也没怎么取用,在论坛就是逛逛!!!

飞越星海 发表于 2011-9-5 22:45:05

回复 10# qqgghh1


    谢谢!!!多多学习才行!!!各位都很热心!!!

rushrain 发表于 2011-9-5 22:49:56

同样受教了,谢谢~

pdp320921 发表于 2011-9-8 20:48:21

最简单的DOS命令: IPconfig -all
页: [1] 2
查看完整版本: 如何获取物理地址(已解决,不知道怎么设置)