Shadows Posted March 26, 2011 Share Posted March 26, 2011 Func Check() If "f4ac08" = Hex(PixelGetColor(446, 219), 6) Then If "f4a408" = Hex(PixelGetColor(490, 130), 6) Then MouseClick ( "left", 800, 500 , 1, 0 ) Sleep (3000) mail() Else sleep (1000) Check() EndIf Else Sleep (1000) Check() EndIf EndFunc In this script i wish to check if two pixels. If they are both the correct colour, then it will click the button. And im having the problem where its Calling for a function in the function its self, this is causing some stacking problems. How do i get around it? Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 26, 2011 Moderators Share Posted March 26, 2011 Shadows,Welcome to the AutoIt forum. What you are running into is known as recursion - take a look at the Recursion tutorial in the Wiki if you want to know more about it. The trick is to keep the check loop alive rather then calling the check function over and over again. Here is one way you might do it - although there any many others:Func Check() Local $fDone = False Do If "f4ac08" = Hex(PixelGetColor(446, 219), 6) And "f4a408" = Hex(PixelGetColor(490, 130), 6) Then MouseClick("left", 800, 500, 1, 0) Sleep(3000) mail() $fDone = True ; Now you can escape from the loop Else Sleep(1000) EndIf Until $fDone = True ; You keep looping until the mail function has been run EndFunc ;==>CheckNote also how you can get 2 If's on the same line. Please ask if you have any questions. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Shadows Posted March 26, 2011 Author Share Posted March 26, 2011 Shadows, Welcome to the AutoIt forum. What you are running into is known as recursion - take a look at the Recursion tutorial in the Wiki if you want to know more about it. The trick is to keep the check loop alive rather then calling the check function over and over again. Here is one way you might do it - although there any many others: Func Check() Local $fDone = False Do If "f4ac08" = Hex(PixelGetColor(446, 219), 6) And "f4a408" = Hex(PixelGetColor(490, 130), 6) Then MouseClick("left", 800, 500, 1, 0) Sleep(3000) mail() $fDone = True ; Now you can escape from the loop Else Sleep(1000) EndIf Until $fDone = True ; You keep looping until the mail function has been run EndFunc ;==>Check Note also how you can get 2 If's on the same line. Please ask if you have any questions. M23 AWESOME! i got it :D and thanks 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