获取Mac地址通过Com获取.ahk
; 创建WMI服务的实例 wmi := ComObjGet("winmgmts:{impersonationLevel=impersonate}!\\" . A_ComputerName . "\root\cimv2") ; 执行WMI查询以获取已启用的网络适配器配置信息 for obj in wmi.ExecQuery("Select MACAddress from Win32_NetworkAdapterConfiguration Where IPEnabled=True") MACAddresses .= obj.MACAddress . "`n" ; 显示MAC地址 if (MACAddresses = "") MsgBox, 找不到活动的网络适配器. else MsgBox, % "活动网络适配器的MAC地址:`n" . MACAddresses
获取Mac地址.ahk
for i, v in GetMacAddress() MsgBox % v ; 获取计算机的MAC地址列表 GetMacAddress(delimiter := ":", case := False) { if (DllCall("iphlpapi.dll\GetAdaptersInfo", "ptr", 0, "uint*", size) = 111) && !(VarSetCapacity(buf, size, 0)) throw Exception("Memory allocation failed for IP_ADAPTER_INFO struct", -1) if (DllCall("iphlpapi.dll\GetAdaptersInfo", "ptr", &buf, "uint*", size) != 0) throw Exception("GetAdaptersInfo failed with error: " A_LastError, -1) addr := &buf, MAC_ADDRESS := [] while (addr) { loop % NumGet(addr+0, 396 + A_PtrSize, "uint") mac .= Format("{:02" (case ? "X" : "x") "}", NumGet(addr+0, 400 + A_PtrSize + A_Index - 1, "uchar")) "" delimiter "" MAC_ADDRESS[A_Index] := SubStr(mac, 1, -1), mac := "" addr := NumGet(addr+0, "uptr") } return MAC_ADDRESS }
获取Mac在用网卡地址.ahk
#NoEnv #SingleInstance force MsgBox % GetMac() ; cardroot:="SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" ; cardaddressnew:=GenerateMacAddress() ; cardline:=cardroot "\" GetMacIndex() ; ;MsgBox %cardline% `n%cardaddressnew% ; RegWrite, REG_SZ,HKEY_LOCAL_MACHINE,%cardline%,NetworkAddress,%cardaddressnew% ; Sleep 1000 ; RunWait %comspec% /c netsh interface set interface 本地连接 disable,,hide ; Sleep 1000 ; RunWait %comspec% /c netsh interface set interface 本地连接 enable,,hide ; ; Sleep 5000 ; MsgBox % GetMac() return For mo in ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration") if (mo.IPEnabled!=0 && Mac:=mo.MacAddress) ; 单行熔断获取在用Mac Break MsgBox % Mac GetMac() { For mo in ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration") if (mo.IPEnabled != 0) Return mo.MacAddress } GetMacIndex() { NetworkConfiguration:=ComObjGet("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration") for mo in NetworkConfiguration { ;是这个意思,但是不很靠谱,如我的电脑里面虽然只经过无线上网,但是装了vm后,vm的网卡也是-1,所以未必准确定位,可自行改进 ;我建议用网卡的“描述” 跟 mo.Description 进行比较,可准确定位 if (mo.Description == "Broadcom NetLink (TM) Gigabit Ethernet" ) return SubStr( "00" mo.Index ,-4) } } GenerateMacAddress() ;来自https://autohotkey.com/board/topic/92743-mac-address-generator/page-2 { HexNum := "0123456789ABCDEF" StringSplit, Num, HexNum loop, 13 { Counter++ Random, Rand, 1, 16 MacAddress .= Num%Rand% (!Mod(Counter,2) ? Separator : "") } return SubStr(MacAddress,1,-1) }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)