_FindAllPixels UDF Problem

  • Hallo, ich bastel grade an der _FindAllPixel UDF.

    Was macht die UDF?

    • Diese sucht nach allen Pixel (d.h. man kann prüfen ob mehrere von den Pixel da sind).

    Problem?

    • Das Problem liegt darin, dass zuviele "Checks" (ConsoleWrite("Checked!" & $iResults & @CRLF)) ausgegeben werden, somit kommt das Programm nicht zum Ende, was ich lediglich haben will.
    • Bei mir wurden schon über 60.000 Pixel gefunden, dass kann aber doch nicht stimmen?

    Hier ist die UDF:

    _FindAllPixel
    [autoit]

    $iItems = _FindAllPixel(0x000000, 76, 69, 1019, 606)
    If Not $iItems <= 0 Then
    MsgBox(64, "Pixel", "Soviele Pixel von der gleichen Art wurden im Bereich gefunden:" & @CRLF & $iItems)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func _FindAllPixel($hColor, $ileft, $itop, $iright, $ibottom, $iShadeVar = 15)
    Local $iResults = 0

    [/autoit] [autoit][/autoit] [autoit]

    If IsString($hColor) Then Return 0
    If IsString($ileft) Then Return 0
    If IsString($iright) Then Return 0
    If IsString($itop) Then Return 0
    If IsString($ibottom) Then Return 0
    If IsString($iShadeVar) Then Return 0

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $iTimeS = TimerInit() ;Zeitstempel erstellt, falls nach einer bestimmten Zeit kein Pixel gefunden worden ist.
    $cSearchResults = PixelSearch($ileft, $itop, $iright, $ibottom, $hColor, $iShadeVar)
    If IsArray($cSearchResults) Then
    $iResults += 1
    ConsoleWrite("Checked! " & $iResults & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $ileft = $cSearchResults[0]
    $itop = $cSearchResults[1]
    $iTimeS = TimerInit()
    Else
    ConsoleWrite("Unchecked! " & $iResults & @CRLF)
    If Round(TimerDiff($iTimeS) / 1000) >= 3 Then Return $iResults
    EndIf
    Until $ileft >= $iright Or $itop >= $ibottom

    [/autoit] [autoit][/autoit] [autoit]

    Return $iResults
    EndFunc

    [/autoit]

    Mit freundlichen Grüßen
    Understood