herewasplato Posted March 2, 2009 Share Posted March 2, 2009 (edited) Because of this post:http://www.autoitscript.com/forum/index.php?showtopic=90184expandcollapse popup;Only tested on XP AutoItSetOption("WinWaitDelay", 1) ;(milliseconds) AutoItSetOption("TrayIconDebug", 1) ;0-off AutoItSetOption("WinTitleMatchMode", 2) ;1-from the start, 2-any substring, 3-exact match HotKeySet("{ESC}", "Terminate") ;set this to 0 to turn off the TrayTips and debug sleeps Global $Debug_Sleep = 5000 ;(milliseconds) ;set it to something like 5000 if you want to read the script's TrayTips and glance at the windows ;you may have to manually close the TrayTip(s) generated by the wireless NIC itself ;to be able to see the ones made by the script Global $SSID = "YourSSID" Global $Authentication_Method = "WPA-PSK" Global $Encryption_Method = "TKIP" Global $Network_Key = "12345678" Global $WinTitle, $WinText, $WinTimeout, $hwnd ;on my laptop ;if the wireless network interface card has been disabled, then the tab named "Wireless Networks"... ;... will not be present in the "Wireless Network Connection Properties" window ;the script attempts to deal with that ;on my laptop ;if the Wireless Zero Configuration service is not running, then the tab named "Wireless Networks"... ;... will not be present in the "Wireless Network Connection Properties" window ;the script attempts to deal with that ;Also, the connection might not be named "Wireless Network Connection" ;the script attempts to deal with that ;by only looking for the word "Properties" in the NIC's "Properties" window ;but wireless has to be somewhere in the connection's name <<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;one option around not needing wireless in the connection's name ;would be to enable all NICs, ;press ENTER on each NIC entry ;if a status window appears AND text like "View Wireless Networks" ;then you might have the NIC of interest. ;and then there are users like me that have two wireless NICS............ ;the worst scenario for this script is: ;Wireless Zero Configuration service stopped ;Wireless Zero Configuration service disabled ;wireless NIC disabled ;radio off on the wireless NIC ;the script attempts to handle all but the radio being off ;on my laptop - the configuration was able to complete with the radio off <<<<<<<<<<<<<<<<<<<< ;but the combination of all of the other things means that the ;tab named "Wireless Networks" is very slow to appear ;in the NIC's "Properties" window ;you may see that properties window appear and disappear repeatedly ;while the script keeps checking for that tab. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;constants for the ServiceControl UDF ;Author: SumTingWong aka pacman ??? ;http://www.autoitscript.com/forum/index.php?showtopic=6487 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Global $STANDARD_RIGHTS_REQUIRED = 0x000F0000 ; Service Control Manager access types Global $SC_MANAGER_CONNECT = 0x0001 Global $SC_MANAGER_CREATE_SERVICE = 0x0002 Global $SC_MANAGER_ENUMERATE_SERVICE = 0x0004 Global $SC_MANAGER_LOCK = 0x0008 Global $SC_MANAGER_QUERY_LOCK_STATUS = 0x0010 Global $SC_MANAGER_MODIFY_BOOT_CONFIG = 0x0020 Global $SC_MANAGER_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _ $SC_MANAGER_CONNECT, _ $SC_MANAGER_CREATE_SERVICE, _ $SC_MANAGER_ENUMERATE_SERVICE, _ $SC_MANAGER_LOCK, _ $SC_MANAGER_QUERY_LOCK_STATUS, _ $SC_MANAGER_MODIFY_BOOT_CONFIG) ; Service access types Global $SERVICE_QUERY_CONFIG = 0x0001 Global $SERVICE_CHANGE_CONFIG = 0x0002 Global $SERVICE_QUERY_STATUS = 0x0004 Global $SERVICE_ENUMERATE_DEPENDENTS = 0x0008 Global $SERVICE_START = 0x0010 Global $SERVICE_STOP = 0x0020 Global $SERVICE_PAUSE_CONTINUE = 0x0040 Global $SERVICE_INTERROGATE = 0x0080 Global $SERVICE_USER_DEFINED_CONTROL = 0x0100 Global $SERVICE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _ $SERVICE_QUERY_CONFIG, _ $SERVICE_CHANGE_CONFIG, _ $SERVICE_QUERY_STATUS, _ $SERVICE_ENUMERATE_DEPENDENTS, _ $SERVICE_START, _ $SERVICE_STOP, _ $SERVICE_PAUSE_CONTINUE, _ $SERVICE_INTERROGATE, _ $SERVICE_USER_DEFINED_CONTROL) ; Service controls Global $SERVICE_CONTROL_STOP = 0x00000001 Global $SERVICE_CONTROL_PAUSE = 0x00000002 Global $SERVICE_CONTROL_CONTINUE = 0x00000003 Global $SERVICE_CONTROL_INTERROGATE = 0x00000004 Global $SERVICE_CONTROL_SHUTDOWN = 0x00000005 Global $SERVICE_CONTROL_PARAMCHANGE = 0x00000006 Global $SERVICE_CONTROL_NETBINDADD = 0x00000007 Global $SERVICE_CONTROL_NETBINDREMOVE = 0x00000008 Global $SERVICE_CONTROL_NETBINDENABLE = 0x00000009 Global $SERVICE_CONTROL_NETBINDDISABLE = 0x0000000A Global $SERVICE_CONTROL_DEVICEEVENT = 0x0000000B Global $SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0x0000000C Global $SERVICE_CONTROL_POWEREVENT = 0x0000000D Global $SERVICE_CONTROL_SESSIonchange = 0x0000000E ; Service types Global $SERVICE_KERNEL_DRIVER = 0x00000001 Global $SERVICE_FILE_SYSTEM_DRIVER = 0x00000002 Global $SERVICE_ADAPTER = 0x00000004 Global $SERVICE_RECOGNIZER_DRIVER = 0x00000008 Global $SERVICE_DRIVER = BitOR($SERVICE_KERNEL_DRIVER, _ $SERVICE_FILE_SYSTEM_DRIVER, _ $SERVICE_RECOGNIZER_DRIVER) Global $SERVICE_WIN32_OWN_PROCESS = 0x00000010 Global $SERVICE_WIN32_SHARE_PROCESS = 0x00000020 Global $SERVICE_WIN32 = BitOR($SERVICE_WIN32_OWN_PROCESS, _ $SERVICE_WIN32_SHARE_PROCESS) Global $SERVICE_INTERACTIVE_PROCESS = 0x00000100 Global $SERVICE_TYPE_ALL = BitOR($SERVICE_WIN32, _ $SERVICE_ADAPTER, _ $SERVICE_DRIVER, _ $SERVICE_INTERACTIVE_PROCESS) ; Service start types Global $SERVICE_BOOT_START = 0x00000000 Global $SERVICE_SYSTEM_START = 0x00000001 Global $SERVICE_AUTO_START = 0x00000002 Global $SERVICE_DEMAND_START = 0x00000003 Global $SERVICE_DISABLED = 0x00000004 ; Service error control Global $SERVICE_ERROR_IGNORE = 0x00000000 Global $SERVICE_ERROR_NORMAL = 0x00000001 Global $SERVICE_ERROR_SEVERE = 0x00000002 Global $SERVICE_ERROR_CRITICAL = 0x00000003 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;for debugging;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Do ; ; _StopService("", "WZCSVC") ; Sleep(100) ;Until Not _ServiceRunning("", "WZCSVC") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; If $Debug_Sleep > 0 Then TrayTip("Checking to see if...", "...the ""Wireless Zero Configuration"" service is running.", 100) ;if the service has been disabled - then this should fix that RunWait("sc config WZCSVC start= auto", "", @SW_HIDE) ;if WZCSVC was already set to automatic - the code above won't hurt that ;if WZCSVC was already running - the code above won't hurt that If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If Not _ServiceRunning("", "WZCSVC") Then If $Debug_Sleep > 0 Then TrayTip("Attempting...", "...to start the ""Wireless Zero Configuration"" service.", 100) ;now the service should start unless it is completely hosed For $i = 1 To 10 _StartService("", "WZCSVC") Sleep(3000) If _ServiceRunning("", "WZCSVC") Then ExitLoop Next If Not _ServiceRunning("", "WZCSVC") Then MsgBox(0, "AutoIt", "The Wireless Zero Configuration service could not be started.") Exit EndIf EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) TrayTip("Its ALIVE!!!...", "...the ""Wireless Zero Configuration"" service is running.", 100) Sleep($Debug_Sleep) EndIf If $Debug_Sleep > 0 Then TrayTip("Opening the Network Connections explorer window...", "...and ""looking"" for the word wireless.", 100) Sleep($Debug_Sleep) EndIf Run("control ncpa.cpl") $hwnd = _Window_Check("Network Connections", "Network Connections", 10) If Not ControlSend($hwnd, "Network Connections", "SysListView321", "wireless") Then MsgBox(0, "AutoIt", "Control could not be found.") Exit EndIf $ret1 = ControlListView($hwnd, "Network Connections", "SysListView321", "GetSelected") $ret2 = ControlListView($hwnd, "Network Connections", "SysListView321", "GetText", $ret1) If StringInStr($ret2, "wireless") = 0 Then MsgBox(0, "AutoIt", "No connection named with ""wireless"" in its name could be found.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) ;netsh did not work here when I tried to enable a disabled NIC ;http://support.microsoft.com/kb/262265 ;the WMI service is off - so this seemed to be the simplest way ;since the window was open any way...... If $Debug_Sleep > 0 Then TrayTip("Enabling - if need be...", "...the first wireless connection entry located.", 100) Sleep($Debug_Sleep) EndIf For $i = 1 To 30 If $i = 29 Then MsgBox(0, "AutoIt", "This does not appear to be a ""wireless"" card after all.") Exit EndIf ;this ENTER should either enable the NIC ;or bring up the status window ;or bring up the window that lets you choose a wireless network - if the radio is off ;or ??? ControlSend($hwnd, "Network Connections", "SysListView321", "wireless") ControlSend($hwnd, "Network Connections", "SysListView321", "{ENTER}") If WinWait("", "Enabl", 1) Then ExitLoop ;catch Enabling... or Enabled If WinWait("Status", "View Wireless Networks", 1) Then ExitLoop If WinWait("", "Choose a wireless network", 1) Then ExitLoop Next WinClose("Status", "View Wireless Networks") WinClose("", "Choose a wireless network") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Opening...", "...the ""Properties"" of first wireless connection entry located.", 100) Sleep($Debug_Sleep) EndIf For $i = 1 To 30 If $i = 29 Then MsgBox(0, "AutoIt", "The Wireless Zero Configuration service does not seem to be ready to be configured. Run the program again.") Exit EndIf ;this control was found in the code above - probably don't need error checking for the control here ControlSend("Network Connections", "Network Connections", "SysListView321", "!{ENTER}") ;brings up the properties Sleep(1000) ;if the "Wireless Networks" tab is missing, then keep looping If WinExists("Properties", "General") Then ControlCommand("Properties", "General", "SysTabControl321", "TabRight", "") Sleep(500) If WinExists("Properties", "Wireless Networks") Then $hwnd = WinGetHandle("Properties", "Wireless Networks") ;take the $hwnd into the next blocks of code ExitLoop Else WinClose("Properties") EndIf EndIf Next If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) ;if the "Wireless Zero Configuration" service had been stopped, ;it might take a while for this radio button to be enabled For $i = 1 To 1000 If $Debug_Sleep > 0 Then TrayTip("Waiting...", "...for the ""Wireless Zero Configuration"" service to be ready.", 100) If ControlCommand($hwnd, "Wireless Networks", "Button1", "IsEnabled", "") Then ExitLoop Sleep(100) If $i = 99 Then MsgBox(0, "AutoIt", "The option to check the ""Use Windows to configure my wireless network settings"" is not enabled.") Exit EndIf Next If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Putting a check by - if need be...", "...""Use Windows to configure my wireless network settings""", 100) Sleep($Debug_Sleep) EndIf ;the next line will only check the radio button ;it does not toggle the state to unchecked if it was already checked ControlCommand($hwnd, "Wireless Networks", "Button1", "Check", "") If Not ControlCommand($hwnd, "Wireless Networks", "Button1", "IsChecked", "") Then MsgBox(0, "AutoIt", """Use Windows to configure my wireless network settings"" was not checked.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""Add..."".", 100) Sleep($Debug_Sleep) EndIf ControlFocus($hwnd, "Wireless Networks", "Button7") If Not ControlClick($hwnd, "Wireless Networks", "Button7") Then MsgBox(0, "AutoIt", "Control could not be found.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Entering...", "...the ""Network name (SSID)"".", 100) Sleep($Debug_Sleep) EndIf $hwnd = _Window_Check("Wireless network properties", "Wireless network key", 10) If Not ControlSetText($hwnd, "Association", "Edit1", $SSID) Then MsgBox(0, "AutoIt", "Control could not be found.") Exit Else If Not ControlGetText($hwnd, "Association", "Edit1") == $SSID Then MsgBox(0, "AutoIt", "The SSID text was not set properly.") Exit EndIf EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Putting a check by - if need be...", "...""Connect even if this network is not broadcasting"".", 100) Sleep($Debug_Sleep) EndIf ;the next line will only check the radio button ;it does not toggle the state to unchecked if it was already checked ControlCommand($hwnd, "Wireless network key", "Button1", "Check", "") For $i = 1 To 100 Sleep(100) If ControlCommand($hwnd, "Wireless network key", "Button1", "IsChecked", "") Then ExitLoop Next If Not ControlCommand($hwnd, "Wireless network key", "Button1", "IsChecked", "") Then MsgBox(0, "AutoIt", """Connect even if this network is not broadcasting"" was not checked.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Selecting...", "...the ""Network Authentication"" method.", 100) Sleep($Debug_Sleep) EndIf ControlCommand($hwnd, "Wireless network key", "ComboBox1", "SelectString", $Authentication_Method) If Not ControlCommand($hwnd, "Wireless network key", "ComboBox1", "GetCurrentSelection", "") == $Authentication_Method Then MsgBox(0, "AutoIt", "The authentication method was not set properly.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Selecting...", "...the ""Data encryption"" method.", 100) Sleep($Debug_Sleep) EndIf ControlCommand($hwnd, "Wireless network key", "ComboBox2", "SelectString", $Encryption_Method) If Not ControlCommand($hwnd, "Wireless network key", "ComboBox2", "GetCurrentSelection", "") == $Encryption_Method Then MsgBox(0, "AutoIt", "The encryption method was not set properly.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Entering...", "...the ""Network key"" and confirming it.", 100) Sleep($Debug_Sleep) EndIf ;not much error checking here ControlSetText($hwnd, "Wireless network key", "Edit2", $Network_Key) ControlSetText($hwnd, "Wireless network key", "Edit3", $Network_Key) If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""OK"" in the ""Wireless network properties"" window.", 100) Sleep($Debug_Sleep) EndIf ControlClick($hwnd, "", "Button5") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""OK"" in the NIC's ""Properties"" window.", 100) Sleep($Debug_Sleep) EndIf $hwnd = _Window_Check("Properties", "Wireless Networks", 10) ControlClick($hwnd, "Wireless Networks", "Button11") WinWaitClose($hwnd) If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Closing the Network Connections explorer window...", "...and hoping that this all works.", 100) Sleep($Debug_Sleep) EndIf WinClose("Network Connections") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) Func _Window_Check($WinTitle, $WinText, $WinTimeout) If WinWait($WinTitle, $WinText, $WinTimeout) = 0 Then MsgBox(0, "AutoIt", "The window named " & $WinTitle & " with the text " & $WinText & " did not open in time.") Exit EndIf If WinActivate($WinTitle, $WinText) = 0 Then MsgBox(0, "AutoIt", "The window named " & $WinTitle & " with the text " & $WinText & " can not be found or cannot be activated.") Exit EndIf If WinWaitActive($WinTitle, $WinText, $WinTimeout) = 0 Then MsgBox(0, "AutoIt", "The window named " & $WinTitle & " with the text " & $WinText & " did not activate in time.") Exit EndIf $hwnd = WinGetHandle($WinTitle, $WinText) If $hwnd = "" Then MsgBox(0, "AutoIt", "Could not get the window handle for the window named " & $WinTitle & " with the text " & $WinText & ".") Exit Else Return $hwnd EndIf EndFunc ;==>_Window_Check ;=============================================================================== ; Description: Starts a service on a computer ; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used ; $sServiceName - name of the service to start ; Requirements: None ; Return Values: On Success - 1 ; On Failure - 0 and @error is set to extended Windows error code ; Note: This function does not check to see if the service has started successfully ;=============================================================================== Func _StartService($sComputerName, $sServiceName) Local $hAdvapi32 Local $hKernel32 Local $arRet Local $hSC Local $hService Local $lError = -1 $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then Return 0 $hKernel32 = DllOpen("kernel32.dll") If $hKernel32 = -1 Then Return 0 $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _ "str", $sComputerName, _ "str", "ServicesActive", _ "long", $SC_MANAGER_CONNECT) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hSC = $arRet[0] $arRet = DllCall($hAdvapi32, "long", "OpenService", _ "long", $hSC, _ "str", $sServiceName, _ "long", $SERVICE_START) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hService = $arRet[0] $arRet = DllCall($hAdvapi32, "int", "StartService", _ "long", $hService, _ "long", 0, _ "str", "") If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService) EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC) EndIf DllClose($hAdvapi32) DllClose($hKernel32) If $lError <> -1 Then SetError($lError) Return 0 EndIf Return 1 EndFunc ;==>_StartService ;=============================================================================== ; Description: Stops a service on a computer ; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used ; $sServiceName - name of the service to stop ; Requirements: None ; Return Values: On Success - 1 ; On Failure - 0 and @error is set to extended Windows error code ; Note: This function does not check to see if the service has stopped successfully ;=============================================================================== Func _StopService($sComputerName, $sServiceName) Local $hAdvapi32 Local $hKernel32 Local $arRet Local $hSC Local $hService Local $lError = -1 $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then Return 0 $hKernel32 = DllOpen("kernel32.dll") If $hKernel32 = -1 Then Return 0 $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _ "str", $sComputerName, _ "str", "ServicesActive", _ "long", $SC_MANAGER_CONNECT) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hSC = $arRet[0] $arRet = DllCall($hAdvapi32, "long", "OpenService", _ "long", $hSC, _ "str", $sServiceName, _ "long", $SERVICE_STOP) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hService = $arRet[0] $arRet = DllCall($hAdvapi32, "int", "ControlService", _ "long", $hService, _ "long", $SERVICE_CONTROL_STOP, _ "str", "") If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService) EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC) EndIf DllClose($hAdvapi32) DllClose($hKernel32) If $lError <> -1 Then SetError($lError) Return 0 EndIf Return 1 EndFunc ;==>_StopService ;=============================================================================== ; Description: Checks if a service is running on a computer ; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used ; $sServiceName - name of the service to check ; Requirements: None ; Return Values: On Success - 1 ; On Failure - 0 ; Note: This function relies on the fact that only a running service responds ; to a SERVICE_CONTROL_INTERROGATE control code. Check the ControlService ; page on MSDN for limitations with using this method. ;=============================================================================== Func _ServiceRunning($sComputerName, $sServiceName) Local $hAdvapi32 Local $arRet Local $hSC Local $hService Local $bRunning = 0 $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then Return 0 $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _ "str", $sComputerName, _ "str", "ServicesActive", _ "long", $SC_MANAGER_CONNECT) If $arRet[0] <> 0 Then $hSC = $arRet[0] $arRet = DllCall($hAdvapi32, "long", "OpenService", _ "long", $hSC, _ "str", $sServiceName, _ "long", $SERVICE_INTERROGATE) If $arRet[0] <> 0 Then $hService = $arRet[0] $arRet = DllCall($hAdvapi32, "int", "ControlService", _ "long", $hService, _ "long", $SERVICE_CONTROL_INTERROGATE, _ "str", "") $bRunning = $arRet[0] DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService) EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC) EndIf DllClose($hAdvapi32) Return $bRunning EndFunc ;==>_ServiceRunning Func Terminate() Exit EndFunc ;==>Terminate~hope this helps~ Edited March 2, 2009 by herewasplato [size="1"][font="Arial"].[u].[/u][/font][/size] Link to comment Share on other sites More sharing options...
Guardiantorj Posted March 2, 2009 Share Posted March 2, 2009 Because of this post: http://www.autoitscript.com/forum/index.php?showtopic=90184 expandcollapse popup;Only tested on XP AutoItSetOption("WinWaitDelay", 1) ;(milliseconds) AutoItSetOption("TrayIconDebug", 1) ;0-off AutoItSetOption("WinTitleMatchMode", 2) ;1-from the start, 2-any substring, 3-exact match HotKeySet("{ESC}", "Terminate") ;set this to 0 to turn off the TrayTips and debug sleeps Global $Debug_Sleep = 5000 ;(milliseconds) ;set it to something like 5000 if you want to read the script's TrayTips and glance at the windows ;you may have to manually close the TrayTip(s) generated by the wireless NIC itself ;to be able to see the ones made by the script Global $SSID = "YourSSID" Global $Authentication_Method = "WPA-PSK" Global $Encryption_Method = "TKIP" Global $Network_Key = "12345678" Global $WinTitle, $WinText, $WinTimeout, $hwnd ;on my laptop ;if the wireless network interface card has been disabled, then the tab named "Wireless Networks"... ;... will not be present in the "Wireless Network Connection Properties" window ;the script attempts to deal with that ;on my laptop ;if the Wireless Zero Configuration service is not running, then the tab named "Wireless Networks"... ;... will not be present in the "Wireless Network Connection Properties" window ;the script attempts to deal with that ;Also, the connection might not be named "Wireless Network Connection" ;the script attempts to deal with that ;by only looking for the word "Properties" in the NIC's "Properties" window ;but wireless has to be somewhere in the connection's name <<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;one option around not needing wireless in the connection's name ;would be to enable all NICs, ;press ENTER on each NIC entry ;if a status window appears AND text like "View Wireless Networks" ;then you might have the NIC of interest. ;and then there are users like me that have two wireless NICS............ ;the worst scenario for this script is: ;Wireless Zero Configuration service stopped ;Wireless Zero Configuration service disabled ;wireless NIC disabled ;radio off on the wireless NIC ;the script attempts to handle all but the radio being off ;on my laptop - the configuration was able to complete with the radio off <<<<<<<<<<<<<<<<<<<< ;but the combination of all of the other things means that the ;tab named "Wireless Networks" is very slow to appear ;in the NIC's "Properties" window ;you may see that properties window appear and disappear repeatedly ;while the script keeps checking for that tab. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;constants for the ServiceControl UDF ;Author: SumTingWong aka pacman ??? ;http://www.autoitscript.com/forum/index.php?showtopic=6487 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Global $STANDARD_RIGHTS_REQUIRED = 0x000F0000 ; Service Control Manager access types Global $SC_MANAGER_CONNECT = 0x0001 Global $SC_MANAGER_CREATE_SERVICE = 0x0002 Global $SC_MANAGER_ENUMERATE_SERVICE = 0x0004 Global $SC_MANAGER_LOCK = 0x0008 Global $SC_MANAGER_QUERY_LOCK_STATUS = 0x0010 Global $SC_MANAGER_MODIFY_BOOT_CONFIG = 0x0020 Global $SC_MANAGER_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _ $SC_MANAGER_CONNECT, _ $SC_MANAGER_CREATE_SERVICE, _ $SC_MANAGER_ENUMERATE_SERVICE, _ $SC_MANAGER_LOCK, _ $SC_MANAGER_QUERY_LOCK_STATUS, _ $SC_MANAGER_MODIFY_BOOT_CONFIG) ; Service access types Global $SERVICE_QUERY_CONFIG = 0x0001 Global $SERVICE_CHANGE_CONFIG = 0x0002 Global $SERVICE_QUERY_STATUS = 0x0004 Global $SERVICE_ENUMERATE_DEPENDENTS = 0x0008 Global $SERVICE_START = 0x0010 Global $SERVICE_STOP = 0x0020 Global $SERVICE_PAUSE_CONTINUE = 0x0040 Global $SERVICE_INTERROGATE = 0x0080 Global $SERVICE_USER_DEFINED_CONTROL = 0x0100 Global $SERVICE_ALL_ACCESS = BitOR($STANDARD_RIGHTS_REQUIRED, _ $SERVICE_QUERY_CONFIG, _ $SERVICE_CHANGE_CONFIG, _ $SERVICE_QUERY_STATUS, _ $SERVICE_ENUMERATE_DEPENDENTS, _ $SERVICE_START, _ $SERVICE_STOP, _ $SERVICE_PAUSE_CONTINUE, _ $SERVICE_INTERROGATE, _ $SERVICE_USER_DEFINED_CONTROL) ; Service controls Global $SERVICE_CONTROL_STOP = 0x00000001 Global $SERVICE_CONTROL_PAUSE = 0x00000002 Global $SERVICE_CONTROL_CONTINUE = 0x00000003 Global $SERVICE_CONTROL_INTERROGATE = 0x00000004 Global $SERVICE_CONTROL_SHUTDOWN = 0x00000005 Global $SERVICE_CONTROL_PARAMCHANGE = 0x00000006 Global $SERVICE_CONTROL_NETBINDADD = 0x00000007 Global $SERVICE_CONTROL_NETBINDREMOVE = 0x00000008 Global $SERVICE_CONTROL_NETBINDENABLE = 0x00000009 Global $SERVICE_CONTROL_NETBINDDISABLE = 0x0000000A Global $SERVICE_CONTROL_DEVICEEVENT = 0x0000000B Global $SERVICE_CONTROL_HARDWAREPROFILECHANGE = 0x0000000C Global $SERVICE_CONTROL_POWEREVENT = 0x0000000D Global $SERVICE_CONTROL_SESSIonchange = 0x0000000E ; Service types Global $SERVICE_KERNEL_DRIVER = 0x00000001 Global $SERVICE_FILE_SYSTEM_DRIVER = 0x00000002 Global $SERVICE_ADAPTER = 0x00000004 Global $SERVICE_RECOGNIZER_DRIVER = 0x00000008 Global $SERVICE_DRIVER = BitOR($SERVICE_KERNEL_DRIVER, _ $SERVICE_FILE_SYSTEM_DRIVER, _ $SERVICE_RECOGNIZER_DRIVER) Global $SERVICE_WIN32_OWN_PROCESS = 0x00000010 Global $SERVICE_WIN32_SHARE_PROCESS = 0x00000020 Global $SERVICE_WIN32 = BitOR($SERVICE_WIN32_OWN_PROCESS, _ $SERVICE_WIN32_SHARE_PROCESS) Global $SERVICE_INTERACTIVE_PROCESS = 0x00000100 Global $SERVICE_TYPE_ALL = BitOR($SERVICE_WIN32, _ $SERVICE_ADAPTER, _ $SERVICE_DRIVER, _ $SERVICE_INTERACTIVE_PROCESS) ; Service start types Global $SERVICE_BOOT_START = 0x00000000 Global $SERVICE_SYSTEM_START = 0x00000001 Global $SERVICE_AUTO_START = 0x00000002 Global $SERVICE_DEMAND_START = 0x00000003 Global $SERVICE_DISABLED = 0x00000004 ; Service error control Global $SERVICE_ERROR_IGNORE = 0x00000000 Global $SERVICE_ERROR_NORMAL = 0x00000001 Global $SERVICE_ERROR_SEVERE = 0x00000002 Global $SERVICE_ERROR_CRITICAL = 0x00000003 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;for debugging;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Do ; ; _StopService("", "WZCSVC") ; Sleep(100) ;Until Not _ServiceRunning("", "WZCSVC") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; If $Debug_Sleep > 0 Then TrayTip("Checking to see if...", "...the ""Wireless Zero Configuration"" service is running.", 100) ;if the service has been disabled - then this should fix that RunWait("sc config WZCSVC start= auto", "", @SW_HIDE) ;if WZCSVC was already set to automatic - the code above won't hurt that ;if WZCSVC was already running - the code above won't hurt that If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If Not _ServiceRunning("", "WZCSVC") Then If $Debug_Sleep > 0 Then TrayTip("Attempting...", "...to start the ""Wireless Zero Configuration"" service.", 100) ;now the service should start unless it is completely hosed For $i = 1 To 10 _StartService("", "WZCSVC") Sleep(3000) If _ServiceRunning("", "WZCSVC") Then ExitLoop Next If Not _ServiceRunning("", "WZCSVC") Then MsgBox(0, "AutoIt", "The Wireless Zero Configuration service could not be started.") Exit EndIf EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) TrayTip("Its ALIVE!!!...", "...the ""Wireless Zero Configuration"" service is running.", 100) Sleep($Debug_Sleep) EndIf If $Debug_Sleep > 0 Then TrayTip("Opening the Network Connections explorer window...", "...and ""looking"" for the word wireless.", 100) Sleep($Debug_Sleep) EndIf Run("control ncpa.cpl") $hwnd = _Window_Check("Network Connections", "Network Connections", 10) If Not ControlSend($hwnd, "Network Connections", "SysListView321", "wireless") Then MsgBox(0, "AutoIt", "Control could not be found.") Exit EndIf $ret1 = ControlListView($hwnd, "Network Connections", "SysListView321", "GetSelected") $ret2 = ControlListView($hwnd, "Network Connections", "SysListView321", "GetText", $ret1) If StringInStr($ret2, "wireless") = 0 Then MsgBox(0, "AutoIt", "No connection named with ""wireless"" in its name could be found.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) ;netsh did not work here when I tried to enable a disabled NIC ;http://support.microsoft.com/kb/262265 ;the WMI service is off - so this seemed to be the simplest way ;since the window was open any way...... If $Debug_Sleep > 0 Then TrayTip("Enabling - if need be...", "...the first wireless connection entry located.", 100) Sleep($Debug_Sleep) EndIf For $i = 1 To 30 If $i = 29 Then MsgBox(0, "AutoIt", "This does not appear to be a ""wireless"" card after all.") Exit EndIf ;this ENTER should either enable the NIC ;or bring up the status window ;or bring up the window that lets you choose a wireless network - if the radio is off ;or ??? ControlSend($hwnd, "Network Connections", "SysListView321", "wireless") ControlSend($hwnd, "Network Connections", "SysListView321", "{ENTER}") If WinWait("", "Enabl", 1) Then ExitLoop ;catch Enabling... or Enabled If WinWait("Status", "View Wireless Networks", 1) Then ExitLoop If WinWait("", "Choose a wireless network", 1) Then ExitLoop Next WinClose("Status", "View Wireless Networks") WinClose("", "Choose a wireless network") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Opening...", "...the ""Properties"" of first wireless connection entry located.", 100) Sleep($Debug_Sleep) EndIf For $i = 1 To 30 If $i = 29 Then MsgBox(0, "AutoIt", "The Wireless Zero Configuration service does not seem to be ready to be configured. Run the program again.") Exit EndIf ;this control was found in the code above - probably don't need error checking for the control here ControlSend("Network Connections", "Network Connections", "SysListView321", "!{ENTER}") ;brings up the properties Sleep(1000) ;if the "Wireless Networks" tab is missing, then keep looping If WinExists("Properties", "General") Then ControlCommand("Properties", "General", "SysTabControl321", "TabRight", "") Sleep(500) If WinExists("Properties", "Wireless Networks") Then $hwnd = WinGetHandle("Properties", "Wireless Networks") ;take the $hwnd into the next blocks of code ExitLoop Else WinClose("Properties") EndIf EndIf Next If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) ;if the "Wireless Zero Configuration" service had been stopped, ;it might take a while for this radio button to be enabled For $i = 1 To 1000 If $Debug_Sleep > 0 Then TrayTip("Waiting...", "...for the ""Wireless Zero Configuration"" service to be ready.", 100) If ControlCommand($hwnd, "Wireless Networks", "Button1", "IsEnabled", "") Then ExitLoop Sleep(100) If $i = 99 Then MsgBox(0, "AutoIt", "The option to check the ""Use Windows to configure my wireless network settings"" is not enabled.") Exit EndIf Next If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Putting a check by - if need be...", "...""Use Windows to configure my wireless network settings""", 100) Sleep($Debug_Sleep) EndIf ;the next line will only check the radio button ;it does not toggle the state to unchecked if it was already checked ControlCommand($hwnd, "Wireless Networks", "Button1", "Check", "") If Not ControlCommand($hwnd, "Wireless Networks", "Button1", "IsChecked", "") Then MsgBox(0, "AutoIt", """Use Windows to configure my wireless network settings"" was not checked.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""Add..."".", 100) Sleep($Debug_Sleep) EndIf ControlFocus($hwnd, "Wireless Networks", "Button7") If Not ControlClick($hwnd, "Wireless Networks", "Button7") Then MsgBox(0, "AutoIt", "Control could not be found.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Entering...", "...the ""Network name (SSID)"".", 100) Sleep($Debug_Sleep) EndIf $hwnd = _Window_Check("Wireless network properties", "Wireless network key", 10) If Not ControlSetText($hwnd, "Association", "Edit1", $SSID) Then MsgBox(0, "AutoIt", "Control could not be found.") Exit Else If Not ControlGetText($hwnd, "Association", "Edit1") == $SSID Then MsgBox(0, "AutoIt", "The SSID text was not set properly.") Exit EndIf EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Putting a check by - if need be...", "...""Connect even if this network is not broadcasting"".", 100) Sleep($Debug_Sleep) EndIf ;the next line will only check the radio button ;it does not toggle the state to unchecked if it was already checked ControlCommand($hwnd, "Wireless network key", "Button1", "Check", "") For $i = 1 To 100 Sleep(100) If ControlCommand($hwnd, "Wireless network key", "Button1", "IsChecked", "") Then ExitLoop Next If Not ControlCommand($hwnd, "Wireless network key", "Button1", "IsChecked", "") Then MsgBox(0, "AutoIt", """Connect even if this network is not broadcasting"" was not checked.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Selecting...", "...the ""Network Authentication"" method.", 100) Sleep($Debug_Sleep) EndIf ControlCommand($hwnd, "Wireless network key", "ComboBox1", "SelectString", $Authentication_Method) If Not ControlCommand($hwnd, "Wireless network key", "ComboBox1", "GetCurrentSelection", "") == $Authentication_Method Then MsgBox(0, "AutoIt", "The authentication method was not set properly.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Selecting...", "...the ""Data encryption"" method.", 100) Sleep($Debug_Sleep) EndIf ControlCommand($hwnd, "Wireless network key", "ComboBox2", "SelectString", $Encryption_Method) If Not ControlCommand($hwnd, "Wireless network key", "ComboBox2", "GetCurrentSelection", "") == $Encryption_Method Then MsgBox(0, "AutoIt", "The encryption method was not set properly.") Exit EndIf If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Entering...", "...the ""Network key"" and confirming it.", 100) Sleep($Debug_Sleep) EndIf ;not much error checking here ControlSetText($hwnd, "Wireless network key", "Edit2", $Network_Key) ControlSetText($hwnd, "Wireless network key", "Edit3", $Network_Key) If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""OK"" in the ""Wireless network properties"" window.", 100) Sleep($Debug_Sleep) EndIf ControlClick($hwnd, "", "Button5") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""OK"" in the NIC's ""Properties"" window.", 100) Sleep($Debug_Sleep) EndIf $hwnd = _Window_Check("Properties", "Wireless Networks", 10) ControlClick($hwnd, "Wireless Networks", "Button11") WinWaitClose($hwnd) If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) If $Debug_Sleep > 0 Then TrayTip("Closing the Network Connections explorer window...", "...and hoping that this all works.", 100) Sleep($Debug_Sleep) EndIf WinClose("Network Connections") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) Func _Window_Check($WinTitle, $WinText, $WinTimeout) If WinWait($WinTitle, $WinText, $WinTimeout) = 0 Then MsgBox(0, "AutoIt", "The window named " & $WinTitle & " with the text " & $WinText & " did not open in time.") Exit EndIf If WinActivate($WinTitle, $WinText) = 0 Then MsgBox(0, "AutoIt", "The window named " & $WinTitle & " with the text " & $WinText & " can not be found or cannot be activated.") Exit EndIf If WinWaitActive($WinTitle, $WinText, $WinTimeout) = 0 Then MsgBox(0, "AutoIt", "The window named " & $WinTitle & " with the text " & $WinText & " did not activate in time.") Exit EndIf $hwnd = WinGetHandle($WinTitle, $WinText) If $hwnd = "" Then MsgBox(0, "AutoIt", "Could not get the window handle for the window named " & $WinTitle & " with the text " & $WinText & ".") Exit Else Return $hwnd EndIf EndFunc ;==>_Window_Check ;=============================================================================== ; Description: Starts a service on a computer ; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used ; $sServiceName - name of the service to start ; Requirements: None ; Return Values: On Success - 1 ; On Failure - 0 and @error is set to extended Windows error code ; Note: This function does not check to see if the service has started successfully ;=============================================================================== Func _StartService($sComputerName, $sServiceName) Local $hAdvapi32 Local $hKernel32 Local $arRet Local $hSC Local $hService Local $lError = -1 $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then Return 0 $hKernel32 = DllOpen("kernel32.dll") If $hKernel32 = -1 Then Return 0 $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _ "str", $sComputerName, _ "str", "ServicesActive", _ "long", $SC_MANAGER_CONNECT) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hSC = $arRet[0] $arRet = DllCall($hAdvapi32, "long", "OpenService", _ "long", $hSC, _ "str", $sServiceName, _ "long", $SERVICE_START) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hService = $arRet[0] $arRet = DllCall($hAdvapi32, "int", "StartService", _ "long", $hService, _ "long", 0, _ "str", "") If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService) EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC) EndIf DllClose($hAdvapi32) DllClose($hKernel32) If $lError <> -1 Then SetError($lError) Return 0 EndIf Return 1 EndFunc ;==>_StartService ;=============================================================================== ; Description: Stops a service on a computer ; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used ; $sServiceName - name of the service to stop ; Requirements: None ; Return Values: On Success - 1 ; On Failure - 0 and @error is set to extended Windows error code ; Note: This function does not check to see if the service has stopped successfully ;=============================================================================== Func _StopService($sComputerName, $sServiceName) Local $hAdvapi32 Local $hKernel32 Local $arRet Local $hSC Local $hService Local $lError = -1 $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then Return 0 $hKernel32 = DllOpen("kernel32.dll") If $hKernel32 = -1 Then Return 0 $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _ "str", $sComputerName, _ "str", "ServicesActive", _ "long", $SC_MANAGER_CONNECT) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hSC = $arRet[0] $arRet = DllCall($hAdvapi32, "long", "OpenService", _ "long", $hSC, _ "str", $sServiceName, _ "long", $SERVICE_STOP) If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] Else $hService = $arRet[0] $arRet = DllCall($hAdvapi32, "int", "ControlService", _ "long", $hService, _ "long", $SERVICE_CONTROL_STOP, _ "str", "") If $arRet[0] = 0 Then $arRet = DllCall($hKernel32, "long", "GetLastError") $lError = $arRet[0] EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService) EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC) EndIf DllClose($hAdvapi32) DllClose($hKernel32) If $lError <> -1 Then SetError($lError) Return 0 EndIf Return 1 EndFunc ;==>_StopService ;=============================================================================== ; Description: Checks if a service is running on a computer ; Parameters: $sComputerName - name of the target computer. If empty, the local computer name is used ; $sServiceName - name of the service to check ; Requirements: None ; Return Values: On Success - 1 ; On Failure - 0 ; Note: This function relies on the fact that only a running service responds ; to a SERVICE_CONTROL_INTERROGATE control code. Check the ControlService ; page on MSDN for limitations with using this method. ;=============================================================================== Func _ServiceRunning($sComputerName, $sServiceName) Local $hAdvapi32 Local $arRet Local $hSC Local $hService Local $bRunning = 0 $hAdvapi32 = DllOpen("advapi32.dll") If $hAdvapi32 = -1 Then Return 0 $arRet = DllCall($hAdvapi32, "long", "OpenSCManager", _ "str", $sComputerName, _ "str", "ServicesActive", _ "long", $SC_MANAGER_CONNECT) If $arRet[0] <> 0 Then $hSC = $arRet[0] $arRet = DllCall($hAdvapi32, "long", "OpenService", _ "long", $hSC, _ "str", $sServiceName, _ "long", $SERVICE_INTERROGATE) If $arRet[0] <> 0 Then $hService = $arRet[0] $arRet = DllCall($hAdvapi32, "int", "ControlService", _ "long", $hService, _ "long", $SERVICE_CONTROL_INTERROGATE, _ "str", "") $bRunning = $arRet[0] DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hService) EndIf DllCall($hAdvapi32, "int", "CloseServiceHandle", "long", $hSC) EndIf DllClose($hAdvapi32) Return $bRunning EndFunc ;==>_ServiceRunning Func Terminate() Exit EndFunc ;==>Terminate~hope this helps~ I needed to change a 5 to a 4 and it worked great. NOW: If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""OK"" in the ""Wireless network properties"" window.", 100) Sleep($Debug_Sleep) EndIf ControlClick($hwnd, "", "Button4") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) Previous: If $Debug_Sleep > 0 Then TrayTip("Clicking...", "...on ""OK"" in the ""Wireless network properties"" window.", 100) Sleep($Debug_Sleep) EndIf ControlClick($hwnd, "", "Button5") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) Link to comment Share on other sites More sharing options...
herewasplato Posted March 3, 2009 Author Share Posted March 3, 2009 I needed to change a 5 to a 4 and it worked great.Which is why people don't script this GUI too often. But it will do for me and maybe all of my rambling comments in the code will help others think thru what they need to do for their own version.What operating system are you running this on? [size="1"][font="Arial"].[u].[/u][/font][/size] Link to comment Share on other sites More sharing options...
herewasplato Posted March 3, 2009 Author Share Posted March 3, 2009 via PM... I am currently using XP Tablet Edition W/SP2 and have also tested on XP Pro SP2 and both worked fine with the button 4. [size="1"][font="Arial"].[u].[/u][/font][/size] Link to comment Share on other sites More sharing options...
SimplyRick Posted June 25, 2010 Share Posted June 25, 2010 Sorry for the thread necromancy, but I have a question: Can anyone help me with adding a little snippet of code which unchecks the "The key is provided to me automatically" checkbox? From my experience, the script works fantastically except that one, tiny thing. Because of that, the wireless won't connect even though the WEP key is input correctly and all of the other settings are OK. Once I uncheck the "key is provided to me automatically" box, the wireless connects with no problems. Thank you for any help. :-) Link to comment Share on other sites More sharing options...
lawson23 Posted September 19, 2011 Share Posted September 19, 2011 (edited) Win XP PRO sp3I also had to change to button5. Works pretty good thank you.Questions1. Is there anyway to speed this up so it happens much faster? --- Found it by setting--- Global $Debug_Sleep = 02. Is there anyway to hide all of this when running? Edited September 20, 2011 by lawson23 Link to comment Share on other sites More sharing options...
lawson23 Posted September 20, 2011 Share Posted September 20, 2011 (edited) Sorry for the thread necromancy, but I have a question: Can anyone help me with adding a little snippet of code which unchecks the "The key is provided to me automatically" checkbox? From my experience, the script works fantastically except that one, tiny thing. Because of that, the wireless won't connect even though the WEP key is input correctly and all of the other settings are OK. Once I uncheck the "key is provided to me automatically" box, the wireless connects with no problems. Thank you for any help. :-) doesn't this have to be unchecked in order to enter the key? It must be getting checked later in the script. I think I can help you with this but need more information. putting this after selecting the Data Encryption entry point should (untested code) do the job: If $Debug_Sleep > 0 Then TrayTip("unchecking...", "The key is provided for me automatically", 10) Sleep($Debug_Sleep) EndIf ControlClick($hwnd, "", "Button3") If $Debug_Sleep > 0 Then Sleep($Debug_Sleep) Edited September 20, 2011 by lawson23 Link to comment Share on other sites More sharing options...
lawson23 Posted December 1, 2011 Share Posted December 1, 2011 One problem I have not sure if anyone else has this or not is from time to time like out of 10 tries this will happen once.Autoit will come up and say:"The window named network connections with the text Network Connections did not open in time."But the window is there and open. I'm sure it is like a split second miss. Is there anyway to adjust this "in time" value in your script? Link to comment Share on other sites More sharing options...
Chamlien Posted December 24, 2013 Share Posted December 24, 2013 The Wireless Zero Configuration service could not be started? Link to comment Share on other sites More sharing options...
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