storme Posted December 4, 2008 Posted December 4, 2008 G'day all I'm working on making self updating scripts, the computers I work on are standalone on-site domestic. Most have permanent connections but some use dial-up or ad-hoc non-permanent wireless connections. SO the scripts will have to work in a totally NON-Standard environment and (if Possible) work out what that environment is. (IF NOT Possible) then I'll have to resort to an INI file to flag type of connection. If I just put in the standard update that checks for a file on some server the script will trigger the dial-up every time it's run and annoy the customer. I'm hoping that someone has already created a UDF or has something that maybe close. I did write up some steps I was going to try but went around in circles, gave up and deleted the lot in disgust. Hope someone can help or at least point me in a useful direction. Thanks for all/any help John Morrison Some of my small contributions to AutoIt Browse for Folder Dialog - Automation SysTreeView32 | FileHippo Download and/or retrieve program information | Get installedpath from uninstall key in registry | RoboCopy function John Morrison aka Storm-E
rasim Posted December 4, 2008 Posted December 4, 2008 storme$connect = _GetNetworkConnect() If $connect Then MsgBox(64, "Connections", $connect) Else MsgBox(48, "Warning", "There is no connection") EndIf Func _GetNetworkConnect() Local Const $NETWORK_ALIVE_LAN = 0x1 ;net card connection Local Const $NETWORK_ALIVE_WAN = 0x2 ;RAS (internet) connection Local Const $NETWORK_ALIVE_AOL = 0x4 ;AOL Local $aRet, $iResult $aRet = DllCall("sensapi.dll", "int", "IsNetworkAlive", "int*", 0) If BitAND($aRet[1], $NETWORK_ALIVE_LAN) Then $iResult &= "LAN connected" & @LF If BitAND($aRet[1], $NETWORK_ALIVE_WAN) Then $iResult &= "WAN connected" & @LF If BitAND($aRet[1], $NETWORK_ALIVE_AOL) Then $iResult &= "AOL connected" & @LF Return $iResult EndFunc
storme Posted December 4, 2008 Author Posted December 4, 2008 (edited) Thanks Rasim Looks good for a start.... I did some investigating and found similar code using "WinInet.dll" instead of "sensapi.dll" do you know if there is any advantages/disadvantages to using one or the other? Here is some code I cobbled together using "WinInet.dll" after I saw your example and went searching for other bits of code like it. Global $connType = 1 ; 0 = Permanent (LAN/WIFI), 1 = Non Permanent (Dialup) While 1 $state = IsConnected() If $state = 1 Then If Not Ping("www.google.com", 250) Then TrayTip("Internet Connection", "Disconnected, Check Modem For Connection", 2, 2) Else TrayTip("Internet Connection", "Connected", 2, 2) ExitLoop ; Connected to interent so exit loop EndIf Else Select Case $connType = 0 ; permenant TrayTip("Internet Connection", "Disconnected, Check if the Cable Is unplugged or your WIFI is off", 2, 2) Case $connType = 1 ; Dialup TrayTip("Internet Connection", "Disconnected, Please Connect to the internet", 2, 2) EndSelect EndIf Sleep(1000) WEnd Func IsConnected() $IsConnected = DllCall("WinInet.dll", "int", "InternetGetConnectedState", "int_ptr", 0, "int", 0) Return $IsConnected[0] EndFunc ;==>IsConnected Exit Thanks John Morrison Edited December 4, 2008 by storme Some of my small contributions to AutoIt Browse for Folder Dialog - Automation SysTreeView32 | FileHippo Download and/or retrieve program information | Get installedpath from uninstall key in registry | RoboCopy function John Morrison aka Storm-E
rasim Posted December 5, 2008 Posted December 5, 2008 (edited) stormeThe IsConnected() function always return 1 for me.EditGlobal Const $INTERNET_CONNECTION_MODEM = 0x1 Global Const $INTERNET_CONNECTION_LAN = 0x2 Global Const $INTERNET_CONNECTION_PROXY = 0x4 Global Const $INTERNET_CONNECTION_MODEM_BUSY = 0x8 Global Const $INTERNET_RAS_INSTALLED = 0x10 Global Const $INTERNET_CONNECTION_OFFLINE = 0x20 Global Const $INTERNET_CONNECTION_CONFIGURED = 0x40 Dim $State, $val $InetStruct = DllStructCreate("int") $aRet = DllCall("wininet.dll", "int", "InternetGetConnectedState", "ptr", DllStructGetPtr($InetStruct), "int", 0) ConsoleWrite("!> " & $aRet[0] & @LF) $val = DllStructGetData($InetStruct, 1) If BitAND($val, $INTERNET_CONNECTION_MODEM) Then $State &= "Modem connection" & @LF If BitAND($val, $INTERNET_CONNECTION_LAN) Then $State &= "LAN connection" & @LF If BitAND($val, $INTERNET_CONNECTION_PROXY) Then $State &= "Proxy connection" & @LF If BitAND($val, $INTERNET_CONNECTION_MODEM_BUSY) Then $State &= "Modem bussy" & @LF If BitAND($val, $INTERNET_RAS_INSTALLED) Then $State &= "RAS installed" & @LF If BitAND($val, $INTERNET_CONNECTION_OFFLINE) Then $State &= "Offline connection" & @LF If BitAND($val, $INTERNET_CONNECTION_CONFIGURED) Then $State &= "Connection configured" MsgBox(0, "Connection", $State) Edited December 5, 2008 by rasim
storme Posted December 5, 2008 Author Posted December 5, 2008 (edited) stormeThe IsConnected() function always return 1 for me.What type of connection do you have? (ethernet, wifi, dialup, ???)I have a cable modem through a wireless router.If I turn the modem off I get "Check Modem For Connection" "IsConnected=1"If I disocnnect the ethernet cable or turn off the router or tuen off the wifi on my laptop I get "Check if the Cable Is unplugged or your WIFI is off" "IsConnected=0"I'm curious why yours doesn't change??Some of the values the DLL returns are self explanaitory but others are a little cryptic. Is there any doco on what they actually mean so they can be used with confidence.Here are my interpretations. Can you confirm I'm right or wrong.$INTERNET_CONNECTION_MODEM = 0x1Connected via dialupGlobal Const $INTERNET_CONNECTION_LAN = 0x2Eternet connection but this probably means WIFI, etcGlobal Const $INTERNET_CONNECTION_PROXY = 0x4OK so if I have an ethernet (LAN) cable pugged in and I have a proxy configuredWhat do I get? Both?Global Const $INTERNET_CONNECTION_MODEM_BUSY = 0x8Where would this occure?Global Const $INTERNET_RAS_INSTALLED = 0x10What does this indicate?Global Const $INTERNET_CONNECTION_OFFLINE = 0x20I unplugged all the cables and did everything except disble the network conneciton and I couldn't get this one to appear.What does it mean?Global Const $INTERNET_CONNECTION_CONFIGURED = 0x40??? Configured for what ???It looks like teh DLL could be useful but how usfull depends on the interpreation of the data it presents.Thanks for the help rasimJohn MorrisonEthernetdial updisconnectEthernetturnexplanatorydial upEthernetEthernetaccruedisableconnectiontheusefulinterpretation Edited December 5, 2008 by storme Some of my small contributions to AutoIt Browse for Folder Dialog - Automation SysTreeView32 | FileHippo Download and/or retrieve program information | Get installedpath from uninstall key in registry | RoboCopy function John Morrison aka Storm-E
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now