[Thema] Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von EnnyStar, 1. Juni 2008 .

Schlagworte:
  1. 1. Juni 2008
    Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    Hallo Leute ich bin auf der suche nach einen recht komplexen Macro-Programm. Ich habe bisher die G15 genutzt, nur leider verfügt diese über keine If-then-else-Abfragen (oder etwas ähnlichen). Außerdem wäre eine Farberkennung/-auslesung für mich sehr Wichtig. Schleifen wären auch noch eine sehr nützliche Sache aber nicht undbeding nötig.

    Zb Wenn Mausposition dx:.. dy:... Farbe so und so ist dann mache dies...(zb drücke "a" 600ms...) wenn nicht dann mache das....

    Vieleicht hat ja einer eine Idee oder kennt ein solches Prrogramm.
    Danke schonmal im voraus
     
  2. 1. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    Kannst dazu entweder AutoHotKey nehmen oder AutoIt. Sollten beide das können.
    Kannst die nachher auch zu einer .exe kompilieren und dann mit der G15 aufrufen. Mach ich selber auch^^
     
  3. 1. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    Autohotkey sollte das können. Ich hab es noch nie gebraucht/benutzt; kann dir also leider keine fertigen Scripts geben.
     
  4. 2. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    Danke für die Antworten hab euch BWs gegeben
    Hab AutIT jetzt genommen und angefangen den Makro zu schreiben nur leider funtkioniert es nicht das man zB
    Code:
    If PixelGetColor(1578,206)= (0xA30100) then .... else...
    
    Dabei wird immer else ausgeführt... Kann man evtl ein art Farbsektrum angeben? Habe es mit dem dazuliegenden Programm ausgelsen. Nur leider ist dieses zu ungenau da diese Fläche keine komplett reine Fläche hat. Idee wäre auch eine Schablone zu nutzen nur ka wie das gehen soll...
    Jemand Idee?
    Danke schonmal im voraus.
     
  5. 2. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    Die Klammern kann man glaube ich weglassen.
    Ansonsten ist ein Farbwert ja nix anderes als eine Zahl.... also schreib doch einfach ein
    If PixelGetColor(x, y) >= FARBWERT-100 AND PixelGetColor(x, y) <= FARBWERT+100 then


    Btw: AutoIt war eine gute Entscheidung, bei AH blickt man im code schnell nicht mehr durch...
     
  6. 2. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    ein einfaches gleichheitszeichen is doch ne wehrtzuweisung und wenn ich mich nicht irre kann es nicht gehen mangels fehlender variable. somit is das stückchen code falsch und führt else aus.

    edit:
    lösung mal mit == versuchen

    das war doch falsch

    probier mal mit
    Code:
    If PixelGetColor(1578,206) = [COLOR="Red"]hex[/COLOR]([COLOR="Red"]'[/COLOR]0xA30100[COLOR="Red"]'[/COLOR])
    mfg
     
  7. 4. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    Das mit dem "==" hab ich am Anfang auch immer probiert weil ich es so gewohnt war. Nicht so bei AutoIt!

    Und das Auslesen bzw. Vergleichen der Zahlen funktioniert bei ihm ja glaube ich soweit ich das mitbekommen habe. Also muss man kein hex() verwenden. Das Problem ist einfach das die Farbe nicht ganz gleich bleibt und ein wenig "schwankt".
     
  8. 4. Juni 2008
    AW: Suche Macro-Programm (mit If-Then-Else-Abfragen+Farberkennung/-auslesung)

    mit dem == muß ich dir recht geben! habe ich in der doku auch später so nachgelesen das es in ner IF überprüfung nicht notwendig ist.

    die hex() funktion halte ich nun auch für überflüssig, da es IMHO ja schon nen hexwehrt ist den Au3Info.exe ausspukt.
    ich würde den wehrt aber noch in diese ' <-(ich weis nicht wie se heißen ^^) zeichen setzen, da ich denke es müßte als string deklariet werden. und da ich nicht weis was nu genau die autoit version PixelGetColor() ausspukt hier hex(PixelGetColor(...)) schreiben.


    deine überlegung das der wehrt schwankt ist auch ein sehr guter punkt und das problem hatte ich überlesen. doch würde es sich so wie du es geschreiben hast auf die dezimalwehrte der farbe auswirken. hier liegt wohl der hund begraben.

    bin nochmal ein wenig durch autoit gestöbert und habe aufbauend auf deine lösung nu einen vergleich mit rgb wehrten vor gezogen. da ich meine, das es sonst keine möglichkeit geben wird ähnliche farben zu finden.

    Code:
    #include <Color.au3>
    
    $var = hex(PixelGetColor( 100 , 100 )) ; bei mir (00)E0F2FE
    $var = String('0x' & StringTrimLeft($var,2)) ;wichtig
    
    $var_blue = _ColorGetBlue($var)
    $var_green = _ColorGetGreen($var)
    $var_red = _ColorGetRed($var)
    
    $nColor = '0xE1F1FE' 
    
    $nColor_blue = _ColorGetBlue($nColor)
    $nColor_green = _ColorGetGreen($nColor)
    $nColor_red = _ColorGetRed($nColor)
    
    $toleranz = 1
    
    ;debugcode
    MsgBox (0, '', 'pixel: ' & $var &' b: ' & $var_blue &' g: ' & $var_green &'r: ' & $var_red & ' posi: ' & $nColor &' b: ' & $nColor_blue &' g: ' & $nColor_green &' r: ' & $nColor_red)
    
    if $var_blue >= $nColor_blue-$toleranz And $var_blue <= $nColor_blue+$toleranz And $var_green >= $nColor_green-$toleranz And $var_green <= $nColor_green+$toleranz And $var_red >= $nColor_red-$toleranz And $var_red <= $nColor_red+$toleranz Then 
     MsgBox(0,"The right color is", $var )
    Else
     MsgBox(0,"The wrong color is", $var)
    EndIf
    das mal mein testcode
    die toleranz könnte ja noch speziel auf die einzelnen farben erweitert werden

    viel spaß damit
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.