Jump to content

Help looping PixelSearch


Recommended Posts

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!

Link to comment
Share on other sites

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 Gude
How 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

Link to comment
Share on other sites

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)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...