modified = 20150830
;- http://www.autohotkey.com/board/topic/111086-unsolved-check-if-connected-to-the-internet/ ;- user = Linear Spoon modified=20150830 aaa:= % IsInternetConnected() if aaa=0 msgbox, 262208,InternetCheck,Internet NOT connected else msgbox, 262208,InternetCheck,Internet IS connected return ;------- ;- Should be compatible with Win XP or higher, 32/64 bit, Unicode or ANSI, latest version. IsInternetConnected() { static sz := A_IsUnicode ? 408 : 204, addrToStr := "Ws2_32\WSAAddressToString" (A_IsUnicode ? "W" : "A") VarSetCapacity(wsaData, 408) if DllCall("Ws2_32\WSAStartup", "UShort", 0x0202, "Ptr", &wsaData) return false if DllCall("Ws2_32\GetAddrInfoW", "wstr", "dns.msftncsi.com", "wstr", "http", "ptr", 0, "ptr*", results) { DllCall("Ws2_32\WSACleanup") return false } ai_family := NumGet(results+4, 0, "int") ;- address family (ipv4 or ipv6) ai_addr := Numget(results+16, 2*A_PtrSize, "ptr") ;- binary ip address ai_addrlen := Numget(results+16, 0, "ptr") ;- length of ip DllCall(addrToStr, "ptr", ai_addr, "uint", ai_addrlen, "ptr", 0, "str", wsaData, "uint*", 204) DllCall("Ws2_32\FreeAddrInfoW", "ptr", results) DllCall("Ws2_32\WSACleanup") xxx := ComObjCreate("WinHttp.WinHttpRequest.5.1") F1:="http://www.msftncsi.com/ncsi.txt" F2:="http://ipv6.msftncsi.com/ncsi.txt" xxx.SetTimeouts(500,500,500,500) try { if (ai_family = 2 && wsaData = "131.107.255.255:80") xxx.Open("GET",F1) else if (ai_family = 23 && wsaData = "[fd3e:4f5a:5b81::1]:80") xxx.Open("GET",F2) else return false xxx.Send() return (xxx.ResponseText = "Microsoft NCSI") ;-ncsi.txt will contain exactly this text otherwise=0 } catch e { xxxe:=e.Message msgbox, 262208,ERROR ,Error=Catch`n%f1%`n - or-`n%f2%`n------------------------------------------`n%xxxe%`n------------------------------------------`nit TRYS again ..., } return } ;-------------------------------------------------------------------------------------------------------