IPAddress:=GetIPAddress_1() MsgBox % IPAddress.length() "`n" IPAddress[1,1] GetIPAddress_1(){ Adlist:=[], info:=GetAdaptersInfo() for index, obj in info { if !InStr(obj["Description"],"Adapter")&&!InStr(obj["IpAddressList"],"0.0.0.0")||obj["Description"] ~="i)Wifi|wlan"&&!InStr(obj["IpAddressList"],"0.0.0.0") { Adlist.Push([obj["IpAddressList"]," " . obj["Description"] . " ","〔 " . obj["Description"] . " 〕"]) } } return Adlist } ;获取网卡mac地址 GetAdaptersInfo(){ ; 对GetAdaptersInfo的初始调用以获取所需的大小 if (DllCall("iphlpapi.dll\GetAdaptersInfo", "ptr", 0, "UIntP", size) = 111) ; ERROR_BUFFER_OVERFLOW if !(VarSetCapacity(buf, size, 0)) ; size ==> 1x = 704 | 2x = 1408 | 3x = 2112 return "IP适配器信息结构的内存分配失败!" ; 第二次调用GetAdapters地址以获取我们想要的实际数据 if (DllCall("iphlpapi.dll\GetAdaptersInfo", "ptr", &buf, "UIntP", size) != 0) ; NO_ERROR / ERROR_SUCCESS return "调用GetAdaptersInfo失败,ERROR: " A_LastError ; 从数据中获取信息 addr := &buf, IP_ADAPTER_INFO := {} while (addr) { IP_ADAPTER_INFO[A_Index, "ComboIndex"]:= NumGet(addr+0, o := A_PtrSize, "UInt"), o += 4 IP_ADAPTER_INFO[A_Index, "AdapterName"]:= StrGet(addr+0 + o, 260, "CP0"), o += 260 IP_ADAPTER_INFO[A_Index, "Description"]:= StrGet(addr+0 + o, 132, "CP0"), o += 132 IP_ADAPTER_INFO[A_Index, "AddressLength"]:= NumGet(addr+0, o, "UInt"), o += 4 loop % IP_ADAPTER_INFO[A_Index].AddressLength mac .= Format("{:02X}",NumGet(addr+0, o + A_Index - 1, "UChar")) "-" IP_ADAPTER_INFO[A_Index, "Address"]:= SubStr(mac, 1, -1), mac := "", o += 8 IP_ADAPTER_INFO[A_Index, "Index"]:= NumGet(addr+0, o, "UInt"), o += 4 IP_ADAPTER_INFO[A_Index, "Type"]:= NumGet(addr+0, o, "UInt"), o += 4 IP_ADAPTER_INFO[A_Index, "DhcpEnabled"]:= NumGet(addr+0, o, "UInt"), o += A_PtrSize Ptr := NumGet(addr+0, o, "UPtr"), o += A_PtrSize IP_ADAPTER_INFO[A_Index, "CurrentIpAddress"]:= Ptr ? StrGet(Ptr + A_PtrSize, "CP0") : "" IP_ADAPTER_INFO[A_Index, "IpAddressList"]:= StrGet(addr + o + A_PtrSize, "CP0") ;~ IP_ADAPTER_INFO[A_Index, "IpMaskList"]:= StrGet(addr + o + A_PtrSize + 16, "CP0") , o += A_PtrSize + 32 + A_PtrSize IP_ADAPTER_INFO[A_Index, "IpMaskList"]:= StrGet(addr + o + A_PtrSize * 3, "CP0") , o += A_PtrSize + 32 + A_PtrSize IP_ADAPTER_INFO[A_Index, "GatewayList"]:= StrGet(addr + o + A_PtrSize, "CP0"), o += A_PtrSize + 32 + A_PtrSize IP_ADAPTER_INFO[A_Index, "DhcpServer"]:= StrGet(addr + o + A_PtrSize, "CP0"), o += A_PtrSize + 32 + A_PtrSize IP_ADAPTER_INFO[A_Index, "HaveWins"]:= NumGet(addr+0, o, "Int"), o += A_PtrSize IP_ADAPTER_INFO[A_Index, "PrimaryWinsServer"]:= StrGet(addr + o + A_PtrSize, "CP0"), o += A_PtrSize + 32 + A_PtrSize IP_ADAPTER_INFO[A_Index, "SecondaryWinsServer"] := StrGet(addr + o + A_PtrSize, "CP0"), o += A_PtrSize + 32 + A_PtrSize IP_ADAPTER_INFO[A_Index, "LeaseObtained"]:= DateAdd(NumGet(addr+0, o, "Int")), o += A_PtrSize IP_ADAPTER_INFO[A_Index, "LeaseExpires"]:= DateAdd(NumGet(addr+0, o, "Int")) addr := NumGet(addr+0, "UPtr") } ; 输出数据并释放缓冲区 return IP_ADAPTER_INFO, VarSetCapacity(buf, 0), VarSetCapacity(addr, 0) } DateAdd(time) { if (time = 0) return 0 datetime := 19700101 datetime += time, s FormatTime, OutputVar, datetime, yyyy-MM-dd HH:mm:ss return OutputVar }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)