Schleife bis Farbcode geändert.

  • Ich brauche eine Schleife die abfragt ob die E-Mail da ist. Wenn ja wird der Script fortgesetzt, wenn nein soll die Abfrage nach einiger Zeit erneut erfolgen bis sie da ist.

    Das ganze sollte eigentlich ziemlich einfach sein, da ich nur auf diese E-Mail im Postfach warte, solange das Postfach leer ist, steht anstatt der E-Mail ein rosa-Fehlercode. Also dachte ich mach ich ne Pixel-Farbcode abfrage:

    [autoit]


    $email = 0 ; Variable für E-Mail
    While $email == 0
    MouseClick("left", 315, 451, 1) ; Klickt auf Postfach aktualisieren
    _IELoadWait ($oIE) ; Wartet bis IE-Seite bereit ist
    If PixelGetColor(105, 500) == dec("FFFF00") Then ; Prüft ob keine E-Mail erschienen ist.
    Sleep(500) ; Zeit bis zur nächsten Abfrage
    Else
    $email = 1 ; Wenn der Farbcode nicht Rosa ist soll die schleife verlassen werden
    EndIf
    WEnd
    ;...hier würde das script weitergehn

    [/autoit]

    Leider fragt er wohl nur einmalig ab und hört dann einfach auf. ?(
    Mach ich was falsch bei der Schleife? Oder brauch ich gar eine andere Schleife?? Bitte helft mir mal weiter. ^^

    Einmal editiert, zuletzt von chrisbyRRC (14. März 2010 um 22:22)

  • ja mir ist klar das MouseClick() zB ziemlich fehleranfällig ist. Aber doch ziemlich einfach zu verwenden. Ich möchte halt erstma klein anfangen und mich dann steigern. Im augenblick ist mein problem ja doch nur eher die Benutzung der Schleife.

    Bakku
    Kann es sein das es nur mit deiner Schleife funktioniert? Ich schau mir das mal an aber wenn irgendjemand noch einen tipp hat wäre es schön davon zu hören.

    Danke trotzdem erstmal allen! ;)

  • Bakku
    Kann es sein das es nur mit deiner Schleife funktioniert? Ich schau mir das mal an aber wenn irgendjemand noch einen tipp hat wäre es schön davon zu hören.

    nein es geht mit jeder schleife.
    aber wenn du schon sagst solange bis.... dann hört sich das nach ner do until an.
    also eher so

    Spoiler anzeigen
    [autoit]


    do
    Sleep(500) ; Zeit bis zur nächsten Abfrage
    MouseClick("left", 315, 451, 1) ; Klickt auf Postfach aktualisieren
    _IELoadWait ($oIE) ; Wartet bis IE-Seite bereit ist
    until PixelGetColor(105, 500) == dec("FFFF00")

    [/autoit]
  • Du kannst es natürlich auch mit einer Func machen, und dann Return einbauen.
    Das sähe dann so aus:

    Spoiler anzeigen
    [autoit]

    main()

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

    Func main()
    $email = 0 ; Variable für E-Mail
    While 1
    MouseClick("left", 315, 451, 1) ; Klickt auf Postfach aktualisieren
    _IELoadWait ($oIE) ; Wartet bis IE-Seite bereit ist
    If PixelGetColor(105, 500) == dec("FFFF00") Then ; Prüft ob keine E-Mail erschienen ist.
    Return main()
    Else
    ExitLoop
    EndIf
    WEnd
    EndFunc ;===> main()

    [/autoit]

    Aber ich glaube du wollstes das Script in einer richtige Schleife laufen lassen.

  • Also Danke euch allen erstmal für die Hilfe. Habe es nun zum Glück hinbekommen,
    letzendlich war es nur ein schusselfehler meinerseits. :rolleyes:

    Aber nun steh ich wieder vor einem Problem das ich nicht zu lösen bekomme und für mich total unverständlich ist. ?(
    Vllt würdet ihr so nett sein und euch das noch mal anschaun, denke das der Befehl eigentlich richtig ist:

    [autoit]


    GUICtrlSetData($Input1_username, "User" + $Username, "")

    [/autoit]

    Der Befehl soll mir den kompletten Username in meine GUI schreiben.
    Also eigentlich: "User74805". Aber ich bekomm immer nur "74805" ausgegeben.
    Er überspringt das Word "User" einfach ?(