Auf Frabe überprüfen

  • Hallo,

    Ich möchte mal Überprüfen ob z.B an Pos 100,100 die Farbe 0x91838C ist das soll er solange überprüfen bist die farbe da nicht mehr ist und dann weiter mit den Skript machen.

    MfG

    Einmal editiert, zuletzt von coolerj (28. März 2010 um 19:13)

  • Hallo cooler,

    Hallo,

    Ich möchte mal Überprüfen ob z.B an Pos 100,100 die Farbe 0x91838C ist das soll er solange überprüfen bist die farbe da nicht mehr ist und dann weiter mit den Skript machen.

    MfG

    für was braucht man denn so etwas :?:

  • Wonach soll ich den suchen.
    Man kann nur schlecht suchen wenn man nicht wo nach man suchen muss!

    Er soll merken ob da wirklich ein bestimmtes Box ist.

  • Wonach soll ich den suchen.
    Man kann nur schlecht suchen wenn man nicht wo nach man suchen muss!

    Er soll merken ob da wirklich ein bestimmtes Box ist.

    Du hast selber die Stichwörter zum Suchen gesagt: Farbe oder überprüfen...

    Einmal editiert, zuletzt von Ineluki (28. März 2010 um 17:45)

  • Tu ich aber ich finde nichts.
    Und mit dir will ich so oder so nicht mehr Sprechen.
    Du meinst das ich ein Idiot bin.

  • Er soll ein Programm von mir Automatisieren an der Stelle 100,100 vom Monitor ist ein Punkt mit der Farbe 0x9183C wenn dies Farbe dar ist soll er das ganze nochmal Prüfen bist sie weg ist und dann soll sie mit den Rest weiter machen.

  • Da finde ich aber nichts


    Unwahrscheinlich wenn andere da etwas finden.
    Kann es sein das wenn du die Suchfunktion nutzt nur Verweise auf deinen eigenen Thread erscheinen?
    Falls ja: Nicht die Suchfunktion in einem Thread nutzen sondern im Portal von AutoIt.de.
    Da findest du dann definitiv zumindestens erstmal Ansätze für dein Problem und wenn du dann nicht weiterkommen solltest kannst du ja konkrete Fragen dann zu deinem bisherigen Skript stellen.
    Aber so ganz ohne irgendein Skriptansatz von dir und statt einer Frage nur eine Aufforderung dass andere es für dich schreiben solltest du dich erstmal nicht wundern wenn du dich damit nicht sonderlich beliebt machst.
    Zumal du ja schon an der Suchfunktion scheiterst...

  • So danke schon mal jetzt weiß ich welche Funktion man benutzt.
    So gehts aber nicht und versinkt in der Schleife.

    [autoit]


    Do
    If PixelSearch(536, 537, 344, 345, 0x45382A) Then
    $sprung = 1
    Else
    $sprung = 0
    EndIf
    Until $sprung = 1

    [/autoit]
  • Na das ist ja schonmal was.
    Also wenn du mit PixelSearch arbeitest fragst du ja nicht eine bestimmte Position ab sondern suchst in einem bestimmten Bereich.
    Als Rückgabewert gibt es ein Array mit den Koordinaten eines Fundes.
    OB etwas gefunden wurde steht dann im @error-Wert (Steht alles in der >>Hilfe zu Pixelsearch<< )
    Und genau diesen @error-Wert könnte man nutzen um bei Bedarf die Schleife zu beenden.
    Es ist korrekt so wie du es gemacht hast aber es geht z.B. auch über eine Endlosschleife:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Do
    $aPosition = PixelSearch(536, 537, 344, 345, 0x45382A)
    If Not @error Then ExitLoop
    Until False

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

    _ArrayDisplay($aPosition)

    [/autoit]


    Das was du allerdings im ersten Post schreibst unterscheidet sich ja jetzt von der Funktionsweise.
    Du wolltest ja eigentlich erst nur eine ganz bestimmte Position abfragen.
    Da nimmt man dann >>PixelGetColor()<<.
    Beispiel (Wieder mit Endlosschleife - diesmal aber per While-Wend gelöst):

    Spoiler anzeigen
    [autoit]

    While True
    If PixelGetColor(100,100) = 0x91838C Then ExitLoop
    Sleep(100) ; Zur Senkung der Prozessorlast
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von AspirinJunkie (28. März 2010 um 18:50)

  • Ok das ist auch schon besser.
    Wenn ich das nehme:

    [autoit]


    While True
    If PixelGetColor(526,355) <> 0x181715 Then ExitLoop
    WEnd

    [/autoit]


    Bin ich mir nicht sicher ob das Problem bei der Technik oder ob AutoIt v3 Window Info mir die falsche farbe gibt.
    Es durfte nicht gleich sein sonder musste ungleich sein weil dann soll er erst abbrechen.

  • Vielleicht

    [autoit]

    While True
    If PixelGetColor(526,355) NOT 0x181715 Then ExitLoop
    WEnd

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


    Ich weiß nicht, ob es klappt, ist nur eine Vermutung

  • Bin ich mir nicht sicher ob das Problem bei der Technik oder ob AutoIt v3 Window Info mir die falsche farbe gibt.


    AutoIt bzw. AutoIt Window Info kennen 3 verschiedene Lagerungen des Koordinatensystems.
    Diese kann man im AutoIt-Script per >>Opt("PixelCoordMode", x)<< umstellen und im Au3Info-Tool bei Options-CoordMode.
    Die sollten natürlich auch gleich sein.

    Das mit <> ist schon die richtige Abfrage wenn du auf Ungleichheit prüfen willst.

  • So habe das Problem gelöst habe es einfach mal auf Umgekährt weiße gemacht das man keine Button drücken muss