2 Fragen (Timer + Tastatur)

  • Hallo!

    Ich habe 2 Fragen:

    1.) Ich benutze die _Timer-Funktion. Das Initialisieren (_Timer_SetTimer()), Herunterzählen und schließlich Zerstören (_Timer_KillTimer()) klappt alles, nur wüsste ich gerne wie ich ihn pausiere?! Man soll in meinem Skript den Timer (per Escape, funktioniert auch, es fehlt nur eine Pausieren-Funktion) vor Ablauf pausieren können.

    2.) Ich arbeite in meinem Script mit Schleifen wie folgender

    [autoit]

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    ; und so weiter
    EndSelect
    WEnd

    [/autoit]

    Ich möchte gerne wissen, ob eine der vier Pfeiltasten der Tastatur gedrückt wurde. Wie baue ich in die Schleife eine solche Tastaturabfrage ein?

    Danke im Voraus für hilfreiche Tipps!

  • Hi

    zu 1. weiß ich jetzt auf die schnelle keine Lösung, aber zu 2.

    [autoit]

    #include <Misc.au3>

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

    While 1

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

    If _IsPressed(25) Then ;Taste Links
    Do
    MsgBox(0,"Taste","Taste Links wurde gedrück")
    Until not _IsPressed(25)
    EndIf

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

    Wend

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

    ;~ 25 Links
    ;~ 26 Hoch
    ;~ 27 Rechts
    ;~ 28 Unten

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

    Einfach diese Zeilen nach der Selectabfrage einbauen. :)
    In der Hilfe für _IsPressed sind auch noch alle anderen Tasten erklärt.

    Gruß

  • Erstelle bei Tastendruck einfach eine Temporäre Variable, die den Zählerstand speichert, beim am Ende musst dudie bloß zur Gesamtzeit dazuaddieren.

  • Danke für eure Antworten!

    Problem #2 schon einmal gelöst! Jedoch habe ich dazu noch eine kurze Nachfrage: Wofür genau braucht man die Do Until Schleife? Würde es nicht auf das selbe hinauslaufen, wenn man sie einfach wegließe?

    Mit den Tipps zu Problem #1 werde ich mich später auseinandersetzen, muss jetzt erst einmal weg.

    Werde mich dann hier noch einmal melden, bis dann :thumbup:

  • Eigentlich wollte ich es anders machen .... xD

    [autoit]

    #include <Misc.au3>

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

    While 1

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

    If _IsPressed(25) Then ;Taste Links
    MsgBox(0,"Taste","Taste Links wurde gedrück")
    Do
    sleep(10)
    Until not _IsPressed(25)
    EndIf

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

    Wend

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

    ;~ 25 Links
    ;~ 26 Hoch
    ;~ 27 Rechts
    ;~ 28 Unten

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

    Jetzt ist es so wie ich es machen wollte. Meine vorherige do / until war nicht wirklich sinnvoll. :thumbup:

    Jetzt ist es so das nur 1x die MsgBox kommt. Das Script aus Post #2 ist "falsch" bzw. das Do - Until überflüssig.