Pixel Search problem

  • hiho leutz

    ich hab da ein problem was ich irgendwie ne gelöst bekomme

    ich möchte pixelsearch anwenden normal auch kein problem, aber nun rbauhc ich doch ma hilfe

    ich möchte gern, das 3 pixel übereinstimmen müssen, damit er eine aktion macht.

    mein versuch war dieser

    [autoit]


    $pixel1 = PixelSearch (596, 325, 596, 325,0xFFD200,1)
    $pixel2 = PixelSearch (600, 325, 600, 325,0xFFD200,1)
    $pixel3 = PixelSearch (584, 334, 584, 334,0xFFD200,1)
    $farbe1 = 0xFFD200

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

    While 1
    If ($pixel1 = $farbe1) And ($pixel2 = $farbe1) And ($pixel3 = $farbe1) Then
    ControlSend("WordPad", "", 0, "{5}")
    Sleep (6000)
    EndIf
    WEnd

    [/autoit]

    heisst wenn alle 3 punkte übereinstimmen soll er in wordpad 5 schreiben
    bei allen 3 pixelpunkten ist die farbe 0xFFD200 , sind nur 3 verschiedene kords wo er diese winden soll.

    das muss doch irgendwie möglich sein, aber irgendwie hab ich da wohl ein verdammten denk fehler drinne, ich würde mich sehr freuen wenn mir einer helfen kann und mir das richtig aufschreiben kann.


    vielen dank im vorraus

    Einmal editiert, zuletzt von tristan (22. Juni 2009 um 17:12)

  • und wie muss das ganze denn aussehen?

    weil ich bin zu doof oder so dafür

    hab mit pixelgetcolor probiert, aber irgendwie mach ich wohl dabei was falsch

  • PixelGetColor 
    Gibt die Farbe des Pixels x,y zurück.


    PixelGetColor ( x , y [, hwnd] )


    Parameter
    x X-Koordinate des Pixels. y Y-Koordinate des Pixels. hwnd [optional] Handle des zu verwendenden Fensters.


    Rückgabewert

    Erfolg: Gibt den dezimalen Wert der Pixelfarbe zurück. Fehler: Gibt -1 bei ungültigen Koordinaten zurück.


    Auszug aus der Hilfe ;)
    Mit

    [autoit]

    Hex($Pixel1, 6)

    [/autoit]

    Bekommst du den Hexadezimalwert heraus.
    Dann ganz normal in deine If Funktion einbauen und fertig =)

  • ich bin doof oder?
    so klappt das nämlich net

    [autoit]


    $pixel1 = PixelGetColor (596, 325)
    $pixel2 = PixelGetColor (600, 325)
    $pixel3 = PixelGetColor (584, 334)
    $farbe1 = 0xFFD200

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

    While 1
    If Hex($pixel1, 6) = $farbe1 And Hex($pixel2, 6) = $farbe1 And Hex($pixel3, 6) = $farbe1 Then
    ControlSend("WordPad", "", 0, "{5}")
    Sleep (6000)
    EndIf
    Wend

    [/autoit]
  • Weiss net ob es so funktioniert, aber probier es mal.

    Spoiler anzeigen
    [autoit]

    Global $farbe1 = 0xFFD200

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

    While 1
    If PixelGetColor(596,325) == $farbe1 And PixelGetColor(600,325) == $farbe1 And PixelGetColor(584,334) == $farbe1 Then
    ControlSend("WordPad", "", 0, "{5}")
    Sleep (6000)
    EndIf
    Sleep(150)
    Wend

    [/autoit]
  • Wenn du das Script von dir:

    Spoiler anzeigen


    Von Tristan


    einfach mit einer Fehlermeldung auswirfst (dass er dir alle Farben anzeigt,
    mit allen gesuchten und gefundenen Farben unabhängig ob sie gefunden wurden) :P
    Damit kannste feststellen ob der Pixelgetcolor funktioniert hatte,
    und es möglicherweise an controlsend liegt, dass nichts passiert! ;)

    Zitat

    Die Vergleiche in Zeile 7 müssen == statt = sein. Sonst hält er es für eine Zuweisung.

    Ist das wirklich so? oder nur bei C++ ?

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!