PixelSearch funzt nicht

  • Hi,

    mein Skript soll solange die Farbe überprüfen, bis diese Farbe erscheint (tut sie nach ner weile auch). Dann eben die Schleife verlassen und auf einen Button klicken.

    Code
    MouseMove(717, 502) ;Auf den Button bewegen
    While 1
    $color=PixelGetColor(766, 545) ;Ein tiefes Grün
    $color=Hex($color,6)
    If $color="558801" Then
    ExitLoop
    EndIf 
    Wend
    MouseClick("left") ;Auf den Button klicken

    Das Skript funktioniert leider nicht. Es bewegt sich nur der Mauszeiger auf den Button und das wars dann. Der Bereich, der mit Koordinaten ausgewählt ist, ändert seine Farbe in das definierte dunkelgrün. Nur der Klick auf den Button funktioniert nicht.

    fabs

  • mach das so:

    $1 = Pixelgetcolour

    While $1 = "die farbe von $1"

    $1 = Pixelgetcolour(..)

    Sleep(50)

    Wend

    Wenn die Farbe sich ändert, wird die whileschleife beendet und du kannst weitermachen;)

    benutz aber auch mal die suchfunktion. das thema gabs glaub ich schon ein paar mal....

    Edit: ach ja und du musst natürlich auch die koordinaten deines mausklicks angeben;) also

    mouseclick("left", X, Y )

    schau mal genauer in die hilfe

    gruß

    Einmal editiert, zuletzt von Dönn3y (14. März 2008 um 16:55)

  • Hallo fabs,

    ich habe den Code mal etwas verändert. Damit kannst Du zumindestens feststellen, warum es nicht geht. Außerdem ist die Frage, ob die Farbe wirklich immer pixelgenau gleich ist. Manchmal sind die Farben nicht gleichmäßig, sondern ein Muster, das dann gemittelt den Farbwert ergibt. Aber versuch es erstmal hiermit:

    Spoiler anzeigen
    [autoit]

    MouseMove(717, 502) ;Auf den Button bewegen
    While 1
    $color=PixelGetColor(766, 545) ;Ein tiefes Grün
    $color=Hex($color,6)
    If $color="558801" Then
    ExitLoop
    EndIf
    Sleep (500) ;500ms Pause, sollte mind. 50ms sein, damit die CPU nicht im Dauerstress ist ;)
    ConsoleWrite ("Current Color: " & $color & @CR) ;Jetzt kannst Du in der Console sehen, welche Farbe tatsächlich gefunden wird
    Wend
    MouseClick("left") ;Auf den Button klicken

    [/autoit]

    Gruß,

    TrueMu

    PS: @Dönn3y: Sein Mouseclick ist schon richtig, die anderen Parameter sind optional

  • @TrueMu:
    Danke, aber ich bekomme keine Ausgabe. Ansonsten passiert das gleiche wie bei mir. Alles aber kein klick.
    Bis jetzt hatte ich die Farbe per Screenshot und GIMP bestimmt, aber wenn man das per Konsole ausgeben kann ist's ja genauer.

  • versteh ich dich etwa falsch? also bei funktionierts, wenn ich das so mache, wie ich es beschrieben habe...

  • Muss ich irgendeine Konsole starten, bei der das dann ausgeben wird, oder ist es wie eine MsgBox? Bin noch Anfänger in AutoIt.

  • Konsole ist unterhalb deinem Source Code im Scite Editor und ist keine MsgBox(leich zu übersehen)
    Du kannst es aber auch durch eine MSgBox ersetzen.

    Ja es gibt eine andere Möglichkeit aus Pixel serach und zwar prüfst du deinen pixel und wenn es den pixel nicht mehr gibt ... macht er was anderes:

    Schau im Bot Forum da gibts mehrere Möglichkeiten

    z.B. hier: pixelsearch start ende...

  • Ich hab den ersten Teil anders gelöst - mit WinGetTitle und so. Nur jetzt bin ich wieder beim PixelSearch. Das Skript soll solange überprüfen, ob der Pixel(x, y) die Farbe x hat. Wenn dies der Fall ist, raus aus der Schleife und TAB drücken.

    Spoiler anzeigen
    [autoit]


    While 1
    $pixel = PixelGetColor(34, 753)
    If $pixel = "FF8080" Then
    Send("{TAB}")
    Sleep(200)
    Send($password)
    Sleep(200)
    Send("{TAB}")
    Sleep(200)
    Send($username)
    EndIf
    WEnd

    [/autoit]

    Variablen sind deklariert. Es kommt keine Fehlermeldung. Er macht einfach nix :wacko:

  • Spoiler anzeigen
    [autoit]

    While 1
    $pixel = PixelGetColor(34, 753)
    If $pixel = "FF8080" Then
    Send("{TAB}")
    Sleep(200)
    Send($password)
    Sleep(200)
    Send("{TAB}")
    Sleep(200)
    Send($username)
    EndIf
    sleep(100) ; WICHTIG, sonst dicke CPU Auslastung ;)
    WEnd

    [/autoit]

    Sonst sollte es eig. gehen.

    Gruß