gcue Posted January 12, 2017 Posted January 12, 2017 (edited) hello i am trying to enable/disable the wireless network adaptors under these conditions: when wired connection is active disable wireless when wired connection is NOT active enable wireless it works well except i keep getting the tray icon popup... probably because its running the function again and again... but i thought my IF THEN statements in the while loop were enough to only run it once. can anyone take a gander? thank you in advance!!! expandcollapse popup#RequireAdmin #include <Array.au3> Opt("GUIOnEventMode", 1) Opt("TrayOnEventMode", 1) Opt("TrayMenuMode", 1 + 2) TrayCreateItem("Exit") TrayItemSetOnEvent(-1, "_Exit") TraySetToolTip(StringReplace(@ScriptName, ".exe", "")) TraySetState(1) Global $script_name = "Toggle Wifi When On LAN", $script_exe = $script_name & ".exe" Global $script_version = $script_name & " v" & FileGetVersion(@ScriptName, "FileVersion") Global $msg_normal = 262144, $msg_prompt = 262148, $msg_retry = 262150, $msg_error = 262160 Global $script_dir = @AppDataDir & "\" & $script_name Global $wired_connected, $wireless_connected FilesAdd() While 1 NetworkTest() If $wired_connected = True Then If $wireless_connected = True Then WirelessAdaptor("Disable") EndIf If $wired_connected = False Then If $wireless_connected = False Then WirelessAdaptor("Enable") EndIf Sleep(5000) WEnd Func NetworkTest() ;NetConnectionStatus ;0-"Disconnected" ;1-"Connecting" ;2-"Connected" ;3-"Disconnecting" ;4-"Hardware not present" ;5-"Hardware disabled" ;6-"Hardware malfunction" ;7-"Media disconnected" ;8-"Authenticating" ;9-"Authentication succeeded" ;10-"Authentication failed" ;11-"Invalid address" ;12-"Credentials required" $wbemFlagReturnImmediately = 0x10 $wbemFlagForwardOnly = 0x20 $colItems = "" $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2") $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID='Local Area Connection' OR NetConnectionID='Wireless Network Connection'", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems $name = $objItem.Name $type = $objItem.NetConnectionID $status = $objItem.NetConnectionStatus If $type = "Local Area Connection" Then If $status = 2 Then $wired_connected = True ;2 Else $wired_connected = False ;7 EndIf EndIf If $type = "Wireless Network Connection" Then If $status = 2 Then $wireless_connected = True ;2 Else $wireless_connected = False ;0 EndIf EndIf Next Else MsgBox($msg_error, $script_name, "No WMI Objects Found for class: " & "Win32_NetworkAdapter") EndIf EndFunc ;==>NetworkTest Func WirelessAdaptor($action) TrayTip("Wireless Network Adaptor", $action & "d", 3, 16) TraySetToolTip($script_name & @CRLF & @CRLF & "Wireless " & $action & "d") If $action = "Enable" Then TraySetIcon($script_dir & "\twwol.dll", 1) If $action = "Disable" Then TraySetIcon($script_dir & "\twwol.dll", 2) RunWait(@ComSpec & ' /c netsh interface set interface name="Wireless Network Connection" ' & $action, "", @SW_HIDE) EndFunc ;==>WirelessAdaptor Func FilesAdd() If Not FileExists($script_dir) Then DirCreate($script_dir) EndIf FileInstall("D:\Users\Administrator\Desktop\toggle\twwol.dll", $script_dir & "\twwol.dll", 1) EndFunc ;==>FilesAdd Func FilesDelete() FileDelete($script_dir & "\twwol.dll") EndFunc ;==>FilesDelete Func Debug($variable1 = "", $variable2 = "", $variable3 = "", $variable4 = "") ;~ #include <array.au3> ;~ $msg_normal = 0 If IsArray($variable1) Then _ArrayDisplay($variable1) Else If $variable2 <> "" Then $variable1 &= @CRLF & $variable2 EndIf If $variable3 <> "" Then $variable1 &= @CRLF & $variable3 EndIf If $variable4 <> "" Then $variable1 &= @CRLF & $variable4 EndIf ClipPut($variable1) MsgBox($msg_normal, "Debug", $variable1) EndIf EndFunc ;==>Debug Func _Exit() FilesDelete() Exit EndFunc ;==>_Exit Edited January 12, 2017 by gcue
MattHiggs Posted January 12, 2017 Posted January 12, 2017 (edited) Hey man. Let me do you a favor and save you some time with a solution that already does that. Or at the very least you can use it as a reference. Edited January 12, 2017 by MattHiggs
gcue Posted January 12, 2017 Author Posted January 12, 2017 very cool tool. thanks for that.. i am still curious however why its not working as intended.
MattHiggs Posted January 12, 2017 Posted January 12, 2017 2 minutes ago, gcue said: very cool tool. thanks for that.. i am still curious however why its not working as intended. Hmmm. Not sure why it continously keeps restarting, but I do know that, using wmi explorer, I could not find an entry for "Win32_NetworkAdapter" under "root\CIMv2". You might want to verify the WMI setup on the machine using aforementioned tool.
Subz Posted January 13, 2017 Posted January 13, 2017 @gcue The reason I believe it keeps firing is that the variables $wired_connected and $wireless_connected remain the same. At the bottom of your NetworkTest() function if you put a MsgBox displaying $wired_connected and $wireless_connected, what does it return? Nb: I would have personally placed AdLibRegister before the loop and moved your check into the NetworkTest function.
gcue Posted January 13, 2017 Author Posted January 13, 2017 good catch. i made the changes you suggested thank you very much for your help! hope you have a great weekend
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