sanfer8889 发表于 2018-1-10 14:42:56

请教,如何获取当前网关IP地址的MAC地址?

看到例子都是几乎都是获取本机IP地址和MAC地址的,没留意到有相关的针对IP地址,提前其MAC地址的方法?

贴个例子是获取网关ip地址的:MsgBox(0,0,_Gateway())
Func _Gateway()
      Dim $IPGateway
      Dim $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
      Dim $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = TRUE", "WQL", 0x10 + 0x20)
      For $objItem In $colItems
                $IPGateway = $objItem.DefaultIPGateway(0)
                If StringInStr($IPGateway, ".") > 0 Then ExitLoop
                Next
                If StringRegExpReplace($IPGateway, '(\d+\.){12}', '') = "" Then
                MsgBox ( 0 , "ERROR" , "无法获取本地网关,请检查网线是否连接且已通过认证" )
                Else
                Return StringRegExpReplace($IPGateway, '(\d+\.){12}', '')
                        EndIf
EndFunc

229989799 发表于 2018-1-10 20:06:01

本帖最后由 229989799 于 2018-1-10 20:08 编辑

ping 192.168.1.1    //ping网关,使本机与之产生通信,从而缓存对方的MAC
arp -a                     //查看arp缓存的IP/MAC表

这是比较笨 的办法。利用cmd回显的办法
如果不在一个局域网基本上看不到对方的MAC地址

sanfer8889 发表于 2018-1-10 20:50:19

ping 192.168.1.1    //ping网关,使本机与之产生通信,从而缓存对方的MAC
arp -a                     // ...
229989799 发表于 2018-1-10 20:06 http://www.autoit3.cn/images/common/back.gif


这的确是一个获取MAC地址的方法,

我的打算是每3分钟监测一次的,假设每次都开和小黑窗(CMD)出来获取,对屏幕就有干扰了
应该也有思路可以隐藏小黑窗,但这应该不是一个终极解决办法,

难道Autoit没有方法或者函数,直接对一个IP地址获取其MAC地址了。。。

zch11230 发表于 2018-1-10 22:11:59

发送ARP数据包

zch11230 发表于 2018-1-10 22:25:52

_API_Get_NetworkAdapterMAC

sanfer8889 发表于 2018-1-11 10:32:54

_API_Get_NetworkAdapterMAC
zch11230 发表于 2018-1-10 22:25 http://www.autoit3.cn/images/common/back.gif


感谢感谢,试验成功了。。。

84063016 发表于 2018-1-11 11:33:33

学习一下 ,貌似不错

84063016 发表于 2018-1-11 11:33:36

学习一下 ,貌似不错

yunnl 发表于 2018-1-12 17:28:06

学习一下,5#方法不错

生于忧患 发表于 2018-1-16 23:06:03

批处理好像也可以获取网关mac
页: [1]
查看完整版本: 请教,如何获取当前网关IP地址的MAC地址?