PixelSearch - Farbe nicht gefunden

  • Hallo, als totaler Neuling in AutoIt habe ich eine hoffentlich schnell zu beantwortende Frage :rolleyes:

    Ich habe bisher eher mit verschiedenen Befehlen experimentiert bis ich einige brauchbare Scripte hatte, als mir wirklich die Zeit genommen komplexe Anleitungen durchzulesen. Für meine Zwecke ist (bisher^^) das völlig ausreichend.

    Mein Problem ist, dass ich inzwischen an dieser Stelle nicht mehr weiterkomme:


    [autoit]

    Global $Active = 0
    While 1
    If $Active = 1 Then
    Sleep(2000)
    $Ja = PixelSearch(931,231,1676,982,0x57FDAE)
    MouseClick ( "left", $Ja[0], $Ja[1])
    EndIf
    WEnd

    [/autoit]

    funktioniert wunderbar, solange bis er die angegebene Farbe mal nicht findet, dann bekomme ich:

    ---------------------------
    AutoIt Error
    ---------------------------
    Line 5 (File "***"):

    MouseClick ( "middle", $Ja[0], $Ja[1])
    MouseClick ( "middle", $Ja^ ERROR

    Error: Subscript used with non-Array variable.
    ---------------------------
    OK
    ---------------------------


    Wo und wie muss ich hier etwas verändern, damit das Script statt mir diese Meldung zu geben einfach sieht "Farbe nicht gefunden" -> also mach "das und das" und wiederhole die schleife?

    Ich habe nun schon rund 2 Stunden mit "If @error Then" und "If IsArray($Ja) = 1 Then" und was ich noch so im Netz gefunden habe herumgefuchtelt, die erste Stunde hab ich den Fehler gemacht und versucht "Func" in die While schleife zu setzen.

    Ich hoffe ihr lacht nicht zu lange über mich und könnt mir weiterhelfen :D

    • Offizieller Beitrag

    Der obrige Code dürfte nie ausgeführt werden.

    [autoit]

    If $Active = 1 Then

    [/autoit]


    Diese Bedingung wird nie erfüllt, vor der While Wend Schleife wird der Wert von $Active auf 0 gesetzt. 8|

  • bitte schön :D

    [autoit]

    Global $Active = 0

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

    $Active = 1
    While 1
    If $Active = 1 Then
    Sleep(2000)
    $Ja = PixelSearch(931,231,1676,982,0x57FDAE)
    If @error Then
    MsgBox(0, '', 'Farbe nicht gefunden')
    Else
    MouseClick ( "left", $Ja[0], $Ja[1])
    EndIf
    EndIf
    WEnd

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • BugFix
    Naja das sind halt die ersten und häufigsten Befehle die ich so gefunden habe - gleich mal ausprobiert :P

    Raupi
    Wie gesagt ich hab (bisher) keine Ahnung von Scripts, programmieren etc.
    Hab das Script mittels Internet - kopieren, einfügen und umschreiben erstellt xD

    Schnuffel
    Danke! so funktioniert´s endlich :)

    Trotzdem hab ich noch eine Frage:

    [autoit]

    If @error Then
    MsgBox(0, '', 'Farbe nicht gefunden')

    [/autoit]


    Was muss hier rein wenn er einfach von vorn anfangen soll, also zum Beispiel nach xx sek. erneut Prüfen, Schleife wiederholen?