找回密码
 加入
搜索
查看: 8099|回复: 18

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

 火.. [复制链接]
发表于 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[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   ;==>_GetMAC
10楼的方法:
$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,":","-"))
发表于 2011-9-4 10:40:48 | 显示全部楼层
电脑物理地址?MAC?
 楼主| 发表于 2011-9-4 10:42:02 | 显示全部楼层
回复 2# dyd


    对啊!!就是这个!!!我想用记事本输出!!!
发表于 2011-9-4 13:48:05 | 显示全部楼层
Func _GetMAC($sIP)
        Local $MAC, $MACSize, $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   ;==>_GetMAC
请线搜索下论坛。。。。有关MAC地址的很多
发表于 2011-9-4 15:45:14 | 显示全部楼层
回复 3# 飞越星海


    这个在论坛里有很多例子,自己找下吧
 楼主| 发表于 2011-9-4 16:47:53 | 显示全部楼层
回复 4# arkhe


    好滴,谢谢!!!
 楼主| 发表于 2011-9-4 16:48:47 | 显示全部楼层
回复 5# dyd


    还没有学会使用论坛搜索工具啊,就想着百度,谷歌、、、
发表于 2011-9-4 20:45:37 | 显示全部楼层
其实可以用@ADDADDRSS
发表于 2011-9-4 22:22:02 | 显示全部楼层
回复 7# 飞越星海


   你第一次上论坛?
发表于 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的是最好的。
发表于 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


    谢谢!!!多多学习才行!!!各位都很热心!!!
发表于 2011-9-5 22:49:56 | 显示全部楼层
同样受教了,谢谢~
发表于 2011-9-8 20:48:21 | 显示全部楼层
最简单的DOS命令: IPconfig -all
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-13 10:37 , Processed in 0.096489 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表