moorsey Posted March 13, 2012 Posted March 13, 2012 Hi all, Have looked around and tried a few different things from various suggestions, but can't get pixelsearch to loop until it finds a colour. The script either stalls completely, or just continues running the script. At the moment, it just continues with the below: Local $pixel Do $pixel = PixelSearch(46, 427, 71, 451, 0xFFFF00) _FileWriteLog($LogFile, "Checking pixels") ; Write to the logfile passing the filehandle returned by FileOpen. Sleep(500) Until Not @error _FileWriteLog($LogFile, "Toolbar found, continuing") ; Write to the logfile passing the filehandle returned by FileOpen. Have also tried using "Until $pixel[0] > 0". I have used the following code to check that the PixelSearch does actually work: Local $pixel Sleep(5000) $pixel = PixelSearch(46, 427, 71, 451, 0xFFFF00) MsgBox(0, "", $pixel[0] & $pixel[1]) Which it does. Any tips appreciated!
BrewManNH Posted March 13, 2012 Posted March 13, 2012 The only time @error will be set is if sleep returns an error, not your pixelsearch. When you check @error you have to do it right after the function you want to check, you're checking it 2 functions later, so it's never going to exit until you run out of HD space and the script crashes. Sleep doesn't set @error so it's not working the way you want. Put the PixelSearch at the bottom of your loop, or do it another way. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
RobGuy Posted March 15, 2012 Posted March 15, 2012 It could be helpful to do it other ways but if you really want to finish up a loop and respond to the occasion of @error someplace in the middle you can do something like this: #include <Constants.au3> Opt('MustDeclareVars', 1) Local $error, $sOut='',$p=Run( _ 'CMD /c Dir C:\&&Dir "%WINDIR%"&&Dir /s "%USERPROFILE%\My Documents"' _ , @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD) ConsoleWrite('Running') While Not $error $sOut &= StdoutRead($p) $error = @error Sleep(500) ConsoleWrite('.') WEnd ConsoleWrite($sOut)
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