Calster Posted October 23, 2007 Posted October 23, 2007 (edited) When i run my Colour Clicker script it clicks fine and everything, but when i want it to stop clicking (but not exit the script) so i can change the settings. anyway i press my hotkey to stop the clicking (ESC) but it keeps on clicking.... Well i hope you can help me.... Heres my script The function to stop the clicking is at the bottom in the $msg = $Start case... expandcollapse popup#include <GUIConstants.au3> GUICreate("Color Clicker") GUISetState(@SW_SHOW) $menu1 = GUICtrlCreateMenu("Help") $Menu11 = GUICtrlCreateMenuItem("Help", $menu1) HotKeySet("{ESC}", "Close") HotKeySet("{F9}", "GetCol") HotKeySet("{F10}", "GetCol1") HotKeySet("{F11}", "GetCol2") HotKeySet("{F8}", "start") HotKeySet("{F1}", "TL") HotKeySet("{F2}", "BR") $Start = GUICtrlCreateButton("Start", 0, 0, 100, 25) ; Coords GUICtrlCreateLabel("Coordinates:", 0, 30) GUICtrlCreateLabel("Top:", 0, 80) GUICtrlCreateLabel("Left:", 0, 50) GUICtrlCreateLabel("Bottom:", 0, 140) GUICtrlCreateLabel("Right:", 0, 110) ; Inputs $Top = GUICtrlCreateInput("", 50, 80, 70, 20) $Left = GUICtrlCreateInput("", 50, 50) $Bottom = GUICtrlCreateInput("", 50, 140) $Right = GUICtrlCreateInput("", 50, 110) ; Colour GUICtrlCreateLabel("Colour 1:", 0, 190) GUICtrlCreateLabel("Colour 2:", 130, 190) GUICtrlCreateLabel("Colour 3:", 260, 190) ; Input $Colour = GUICtrlCreateInput("", 50, 190, 70) $Colour2 = GUICtrlCreateInput("", 180, 190, 70) $Colour3 = GUICtrlCreateInput("", 310, 190, 70) GUICtrlCreateLabel("Delay between clicks:", 0, 230) $Delay = GUICtrlCreateInput("0", 110, 230, 70, 20) GUICtrlCreateLabel("(In Miliseconds)", 180, 230) GUICtrlCreateLabel("Made By Callum Scaife (AKA Calster)", 110, 350) Func start() $msg = $Start EndFunc ;==>start Func Close () Exit EndFunc ;==>Close Func TL() GUICtrlSetData($Left, $Pos[0]) GUICtrlSetData($Top, $Pos[1]) EndFunc ;==>TL Func BR() GUICtrlSetData($Right, $Pos[0]) GUICtrlSetData($Bottom, $Pos[1]) EndFunc ;==>BR Func GetCol() GUICtrlSetColor($Colour, $Col1) GUICtrlSetData($Colour, $Col1) Sleep(100) GUICtrlSetBkColor($Colour, GUICtrlRead($Colour)) EndFunc ;==>GetCol Func GetCol1() GUICtrlSetColor($Colour2, $Col1) GUICtrlSetData($Colour2, $Col1) Sleep(100) GUICtrlSetBkColor($Colour2, GUICtrlRead($Colour2)) EndFunc ;==>GetCol1 Func GetCol2() GUICtrlSetColor($Colour3, $Col1) GUICtrlSetData($Colour3, $Col1) Sleep(100) GUICtrlSetBkColor($Colour3, GUICtrlRead($Colour3)) EndFunc ;==>GetCol2 While 1 Dim $Colours[3] $Colours[0] = GUICtrlRead($Colour) $Colours[1] = GUICtrlRead($Colour2) $Colours[2] = GUICtrlRead($Colour3) $Pos = MouseGetPos() $Col1 = PixelGetColor($Pos[0], $Pos[1]) $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Start While 1 For $C = 0 To 2 $Click = PixelSearch(GUICtrlRead($Left), GUICtrlRead($Top), GUICtrlRead($Right), GUICtrlRead($Bottom), $Colours[$C], 10) If Not @error Then MouseClick("Left", $Click[0], $Click[1], 1, 1) Sleep(GUICtrlRead($Delay)) EndIf Next WEnd Case $msg = $Menu11 Run("Help.exe") EndSelect WEnd Thank you all in advance, this is probably a newbie question... but since its from a newbie thats ok right? Edited October 23, 2007 by Calster Calster - User and lover of AutoIt !
DW1 Posted October 23, 2007 Posted October 23, 2007 Wow, that code is a mess. Run Tidy and use the [ autoit ] [ /autoit ] tags (without spaces) and we will have indented color coded code. As it is right now, it hurts me to read your code. Also, put your functions all together, and is that a function defined in the loop? why? AutoIt3 Online Help
Calster Posted October 23, 2007 Author Posted October 23, 2007 (edited) autoit tags and tidy used - Sorry about that. and the function is in the loop so i can use 'exitloop'. Edited October 23, 2007 by Calster Calster - User and lover of AutoIt !
Calster Posted October 23, 2007 Author Posted October 23, 2007 In my script at the top, it shoulb be that the func Close() is in the while loop at the bottom (Case $msg = $Start) and instead of exit it should be ExitLoop ... Sorry cant edit the original post. Calster - User and lover of AutoIt !
Nahuel Posted October 24, 2007 Posted October 24, 2007 In my script at the top, it shoulb be that the func Close() is in the while loop at the bottom (Case $msg = $Start) and instead of exit it should be ExitLoop ... Sorry cant edit the original post. Like this? expandcollapse popup#include <GUIConstants.au3> Opt("GUICloseOnESC",0) GUICreate("Color Clicker") GUISetState(@SW_SHOW) $menu1 = GUICtrlCreateMenu("Help") $Menu11 = GUICtrlCreateMenuItem("Help", $menu1) $Stop=False HotKeySet("{ESC}", "Close") HotKeySet("{F9}", "GetCol") HotKeySet("{F10}", "GetCol1") HotKeySet("{F11}", "GetCol2") HotKeySet("{F8}", "start") HotKeySet("{F1}", "TL") HotKeySet("{F2}", "BR") $Start = GUICtrlCreateButton("Start", 0, 0, 100, 25) ; Coords GUICtrlCreateLabel("Coordinates:", 0, 30) GUICtrlCreateLabel("Top:", 0, 80) GUICtrlCreateLabel("Left:", 0, 50) GUICtrlCreateLabel("Bottom:", 0, 140) GUICtrlCreateLabel("Right:", 0, 110) ; Inputs $Top = GUICtrlCreateInput("", 50, 80, 70, 20) $Left = GUICtrlCreateInput("", 50, 50) $Bottom = GUICtrlCreateInput("", 50, 140) $Right = GUICtrlCreateInput("", 50, 110) ; Colour GUICtrlCreateLabel("Colour 1:", 0, 190) GUICtrlCreateLabel("Colour 2:", 130, 190) GUICtrlCreateLabel("Colour 3:", 260, 190) ; Input $Colour = GUICtrlCreateInput("", 50, 190, 70) $Colour2 = GUICtrlCreateInput("", 180, 190, 70) $Colour3 = GUICtrlCreateInput("", 310, 190, 70) GUICtrlCreateLabel("Delay between clicks:", 0, 230) $Delay = GUICtrlCreateInput("0", 110, 230, 70, 20) GUICtrlCreateLabel("(In Miliseconds)", 180, 230) GUICtrlCreateLabel("Made By Callum Scaife (AKA Calster)", 110, 350) While Not $Stop Dim $Colours[3] $Colours[0] = GUICtrlRead($Colour) $Colours[1] = GUICtrlRead($Colour2) $Colours[2] = GUICtrlRead($Colour3) $Pos = MouseGetPos() $Col1 = PixelGetColor($Pos[0], $Pos[1]) $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Start While 1 For $C = 0 To 2 $Click = PixelSearch(GUICtrlRead($Left), GUICtrlRead($Top), GUICtrlRead($Right), GUICtrlRead($Bottom), $Colours[$C], 10) If Not @error Then MouseClick("Left", $Click[0], $Click[1], 1, 1) Sleep(GUICtrlRead($Delay)) EndIf Next If $Stop then ExitLoop WEnd Case $msg = $Menu11 Run("Help.exe") EndSelect WEnd Func start() $msg = $Start EndFunc ;==>start Func Close () $Stop=True EndFunc ;==>Close Func TL() GUICtrlSetData($Left, $Pos[0]) GUICtrlSetData($Top, $Pos[1]) EndFunc ;==>TL Func BR() GUICtrlSetData($Right, $Pos[0]) GUICtrlSetData($Bottom, $Pos[1]) EndFunc ;==>BR Func GetCol() GUICtrlSetColor($Colour, $Col1) GUICtrlSetData($Colour, $Col1) Sleep(100) GUICtrlSetBkColor($Colour, GUICtrlRead($Colour)) EndFunc ;==>GetCol Func GetCol1() GUICtrlSetColor($Colour2, $Col1) GUICtrlSetData($Colour2, $Col1) Sleep(100) GUICtrlSetBkColor($Colour2, GUICtrlRead($Colour2)) EndFunc ;==>GetCol1 Func GetCol2() GUICtrlSetColor($Colour3, $Col1) GUICtrlSetData($Colour3, $Col1) Sleep(100) GUICtrlSetBkColor($Colour3, GUICtrlRead($Colour3)) EndFunc ;==>GetCol2
Calster Posted October 24, 2007 Author Posted October 24, 2007 No like this: expandcollapse popup#include <GUIConstants.au3> Opt("GUICloseOnESC",0) GUICreate("Color Clicker") GUISetState(@SW_SHOW) $menu1 = GUICtrlCreateMenu("Help") $Menu11 = GUICtrlCreateMenuItem("Help", $menu1) $Stop=False HotKeySet("{ESC}", "Close") HotKeySet("{F9}", "GetCol") HotKeySet("{F10}", "GetCol1") HotKeySet("{F11}", "GetCol2") HotKeySet("{F8}", "start") HotKeySet("{F1}", "TL") HotKeySet("{F2}", "BR") $Start = GUICtrlCreateButton("Start", 0, 0, 100, 25) ; Coords GUICtrlCreateLabel("Coordinates:", 0, 30) GUICtrlCreateLabel("Top:", 0, 80) GUICtrlCreateLabel("Left:", 0, 50) GUICtrlCreateLabel("Bottom:", 0, 140) GUICtrlCreateLabel("Right:", 0, 110) ; Inputs $Top = GUICtrlCreateInput("", 50, 80, 70, 20) $Left = GUICtrlCreateInput("", 50, 50) $Bottom = GUICtrlCreateInput("", 50, 140) $Right = GUICtrlCreateInput("", 50, 110) ; Colour GUICtrlCreateLabel("Colour 1:", 0, 190) GUICtrlCreateLabel("Colour 2:", 130, 190) GUICtrlCreateLabel("Colour 3:", 260, 190) ; Input $Colour = GUICtrlCreateInput("", 50, 190, 70) $Colour2 = GUICtrlCreateInput("", 180, 190, 70) $Colour3 = GUICtrlCreateInput("", 310, 190, 70) GUICtrlCreateLabel("Delay between clicks:", 0, 230) $Delay = GUICtrlCreateInput("0", 110, 230, 70, 20) GUICtrlCreateLabel("(In Miliseconds)", 180, 230) GUICtrlCreateLabel("Made By Callum Scaife (AKA Calster)", 110, 350) While Not $Stop Dim $Colours[3] $Colours[0] = GUICtrlRead($Colour) $Colours[1] = GUICtrlRead($Colour2) $Colours[2] = GUICtrlRead($Colour3) $Pos = MouseGetPos() $Col1 = PixelGetColor($Pos[0], $Pos[1]) $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Start While 1 For $C = 0 To 2 Func Close () $Stop=True EndFunc ;==>Close $Click = PixelSearch(GUICtrlRead($Left), GUICtrlRead($Top), GUICtrlRead($Right), GUICtrlRead($Bottom), $Colours[$C], 10) If Not @error Then MouseClick("Left", $Click[0], $Click[1], 1, 1) Sleep(GUICtrlRead($Delay)) EndIf Next If $Stop then ExitLoop WEnd Case $msg = $Menu11 Run("Help.exe") EndSelect WEnd Func start() $msg = $Start EndFunc ;==>start Func TL() GUICtrlSetData($Left, $Pos[0]) GUICtrlSetData($Top, $Pos[1]) EndFunc ;==>TL Func BR() GUICtrlSetData($Right, $Pos[0]) GUICtrlSetData($Bottom, $Pos[1]) EndFunc ;==>BR Func GetCol() GUICtrlSetColor($Colour, $Col1) GUICtrlSetData($Colour, $Col1) Sleep(100) GUICtrlSetBkColor($Colour, GUICtrlRead($Colour)) EndFunc ;==>GetCol Func GetCol1() GUICtrlSetColor($Colour2, $Col1) GUICtrlSetData($Colour2, $Col1) Sleep(100) GUICtrlSetBkColor($Colour2, GUICtrlRead($Colour2)) EndFunc ;==>GetCol1 Func GetCol2() GUICtrlSetColor($Colour3, $Col1) GUICtrlSetData($Colour3, $Col1) Sleep(100) GUICtrlSetBkColor($Colour3, GUICtrlRead($Colour3)) EndFunc ;==>GetCol2 As i say sorry for all of this confusion and i hope somebody can help solve my problem... which is that when i press ESC the script keeps on clicking. ~Thanks - Calster Calster - User and lover of AutoIt !
Nahuel Posted October 24, 2007 Posted October 24, 2007 You want it to stop clicking but not quit the program? expandcollapse popup#include <GUIConstants.au3> Opt("GUICloseOnESC",0) GUICreate("Color Clicker") GUISetState(@SW_SHOW) $menu1 = GUICtrlCreateMenu("Help") $Menu11 = GUICtrlCreateMenuItem("Help", $menu1) HotKeySet("{ESC}", "Close") HotKeySet("{F9}", "GetCol") HotKeySet("{F10}", "GetCol1") HotKeySet("{F11}", "GetCol2") HotKeySet("{F8}", "start") HotKeySet("{F1}", "TL") HotKeySet("{F2}", "BR") $Start = GUICtrlCreateButton("Start", 0, 0, 100, 25) ; Coords GUICtrlCreateLabel("Coordinates:", 0, 30) GUICtrlCreateLabel("Top:", 0, 80) GUICtrlCreateLabel("Left:", 0, 50) GUICtrlCreateLabel("Bottom:", 0, 140) GUICtrlCreateLabel("Right:", 0, 110) ; Inputs $Top = GUICtrlCreateInput("", 50, 80, 70, 20) $Left = GUICtrlCreateInput("", 50, 50) $Bottom = GUICtrlCreateInput("", 50, 140) $Right = GUICtrlCreateInput("", 50, 110) ; Colour GUICtrlCreateLabel("Colour 1:", 0, 190) GUICtrlCreateLabel("Colour 2:", 130, 190) GUICtrlCreateLabel("Colour 3:", 260, 190) ; Input $Colour = GUICtrlCreateInput("", 50, 190, 70) $Colour2 = GUICtrlCreateInput("", 180, 190, 70) $Colour3 = GUICtrlCreateInput("", 310, 190, 70) GUICtrlCreateLabel("Delay between clicks:", 0, 230) $Delay = GUICtrlCreateInput("0", 110, 230, 70, 20) GUICtrlCreateLabel("(In Miliseconds)", 180, 230) GUICtrlCreateLabel("Made By Callum Scaife (AKA Calster)", 110, 350) While 1 Global $Stop=False Dim $Colours[3] $Colours[0] = GUICtrlRead($Colour) $Colours[1] = GUICtrlRead($Colour2) $Colours[2] = GUICtrlRead($Colour3) $Pos = MouseGetPos() $Col1 = PixelGetColor($Pos[0], $Pos[1]) $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Start While Not $Stop For $C = 0 To 2 $Click = PixelSearch(GUICtrlRead($Left), GUICtrlRead($Top), GUICtrlRead($Right), GUICtrlRead($Bottom), $Colours[$C], 10) If Not @error Then MouseClick("Left", $Click[0], $Click[1], 1, 1) Sleep(GUICtrlRead($Delay)) EndIf Next If $Stop then ExitLoop WEnd Case $msg = $Menu11 Run("Help.exe") EndSelect WEnd Func start() $msg = $Start EndFunc ;==>start Func Close () $Stop=True EndFunc ;==>Close Func TL() GUICtrlSetData($Left, $Pos[0]) GUICtrlSetData($Top, $Pos[1]) EndFunc ;==>TL Func BR() GUICtrlSetData($Right, $Pos[0]) GUICtrlSetData($Bottom, $Pos[1]) EndFunc ;==>BR Func GetCol() GUICtrlSetColor($Colour, $Col1) GUICtrlSetData($Colour, $Col1) Sleep(100) GUICtrlSetBkColor($Colour, GUICtrlRead($Colour)) EndFunc ;==>GetCol Func GetCol1() GUICtrlSetColor($Colour2, $Col1) GUICtrlSetData($Colour2, $Col1) Sleep(100) GUICtrlSetBkColor($Colour2, GUICtrlRead($Colour2)) EndFunc ;==>GetCol1 Func GetCol2() GUICtrlSetColor($Colour3, $Col1) GUICtrlSetData($Colour3, $Col1) Sleep(100) GUICtrlSetBkColor($Colour3, GUICtrlRead($Colour3)) EndFunc ;==>GetCol2
Calster Posted October 24, 2007 Author Posted October 24, 2007 Exactly like that, thank you very much. ~Calster Calster - User and lover of AutoIt !
Nahuel Posted October 24, 2007 Posted October 24, 2007 No problem, just noticed one thing though. That " If $Stop then ExitLoop" line is not necessary anymore.
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