Findet jemand den Fehler?

  • Spoiler anzeigen
    [autoit]

    $x = False

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

    If Send ("{TAB}") Then
    #cs
    Dieses Script soll erst starten wenn man Tabulator drueckt.
    Leider funktioniert es nicht wie geplant.
    #ce
    $x = True
    else
    $x = False
    EndIf

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

    If $x = True Then
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")

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

    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")

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

    Else
    While 1
    Sleep (10000)
    Wend
    Endif

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

    Joah was habe ich denn falsch gemacht?^^
    Ich habe erst vor ein paar Tagen mit AutoIt angefangen von daher wundert euch nicht wenn ich nen ziemlichen Mist zusammengeschrieben habe. :D

    2 Mal editiert, zuletzt von Hydralisk (7. Juli 2008 um 20:13)

  • Naja wie möchtest du denn Das Tab senden.
    Du schreibst zwar
    Wenn Tab gesendet dann .... aber du sendest es nirgend wo. Also entweder mit HotKeys arbeiten oder ein Gui mit nem Button entwerfen.

    Zu Hotkey schaue in die Hilfe da wird alles mit Beispielen erklärt.
    Bei Fragen dann wieder melden.

    MfG
    Der_Doc

  • Willst du bei der folgenden IF abfrage wissen, ob die Taste TAB gedrückt wurde oder ob der Send Befehl mit TAB ausgeführt wurde?

    Spoiler anzeigen
    [autoit]


    If Send ("{TAB}") Then
    #cs
    Dieses Script soll erst starten wenn man Tabulator drueckt.
    Leider funktioniert es nicht wie geplant.
    #ce
    $x = True
    else
    $x = False
    EndIf

    [/autoit]


    Weil bei deiner If Abfrage wird überprüft ob der Send Befehl ausgeführt wurde.

    [EDIT]

    Wass willst du eigentlich mit dem Programm bezwecken?
    Ich vermute mal, dass du willst, wenn man TAB drückt das der Text in notepad geschrieben wird oder?

    Einmal editiert, zuletzt von morfi93 (6. Juli 2008 um 14:41)

  • Joa,ich möchte ein script schreiben,das erst anfängt nachdem ich bei mir auf der Tastatur TAB gedrückt habe.
    Leider schreibt es einfach drauflos obwohl ich noch nicht TAB gedrückt habe und ich weiß nicht warum.
    Das ist das Problem^^

  • Ok, du musst zuerst einmal das ganze Script in eine Schleife setzen (While), einfach in der Hilfe mal nachschauen

    Bei der If Abfrage musst du nicht den Send Befehl überprüfen, sondern du musst auf _IsPressed überprüfen.

    Ich hoffe ich konnte dir ein wenig weiterhelfen, wenn du noch immer nicht weiter weißt dann schau mal in der AutoIt Hilfe, und wenn du dich noch immer nicht auskennst schreib einfach wieder einen Post.

  • Ich würde es mit nem Hotkey und ner funktion machen
    HotKey:

    Spoiler anzeigen
    [autoit]


    HotKeySet("{TAB}", "schreiben")
    func schreiben()
    ;hier kommt dein code hin
    endFunc

    [/autoit]


    So solltest du es alleine hinkriegen und wenn du noch probleme hast sag bescheid ;)

  • Spoiler anzeigen
    [autoit]

    HotKeySet("{TAB}", "schreiben")
    func schreiben()
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")
    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")
    endFunc

    [/autoit]


    Wenn ich das nun ausführe passiert gar nichts.
    D.h. es erscheint zwar kein Error,aber passiert auch nichts wenn ich TAB drücke.


    Hier genau das selbe:

    Spoiler anzeigen
    [autoit]

    $x = False
    HotKeySet("{TAB}", "schreiben")
    func schreiben()
    If Send ("{TAB}") Then
    #cs
    Dieses Script soll erst starten wenn man Tabulator drueckt.
    Leider funktioniert es nicht wie geplant.
    #ce
    $x = True
    else
    $x = False
    EndIf

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

    If $x = True Then
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")

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

    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")

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

    Else
    While 1
    Sleep (10000)
    Wend
    Endif
    Endfunc

    [/autoit]
  • Aber so gehts's:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{TAB}", "schreiben")
    MsgBox(0,"","Drücke jetzt auf Tab und dann auf OK um das Programm zu starten!")
    Func schreiben()
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")
    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")
    EndFunc

    [/autoit]


    ;)

  • Danke dir aber es wäre etwas unpraktisch für games z.B.
    Wenn man mal kurz ne Taste drücken möchte um z.B. was zu schreiben oder einen skill zu machen möchte man nicht immer auf ok klicken müssen.
    Gibts da noch andere Möglichkeiten?

    [autoit]

    HotKeySet("{TAB}", "schreiben")
    MsgBox(0,"","Drücke jetzt auf Tab und dann auf OK um das Programm zu starten!")

    [/autoit]


    Woher nimmst du denn das ok?
    Also Tab wird ja oben deklariert aber von ok steht da nichts.
    Ist das schon in der Messagebox funktion eingebaut?
    Und ginge es auch ohne Tabulator zu drücken,d.h. nur auf "OK" klicken?
    Ich habe es mal versucht und den Hotkey weggelassen.

    [autoit]


    MsgBox(0,"","Drucke jetzt auf OK um das Programm zu starten!")
    Func schreiben()
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")
    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")
    EndFunc

    [/autoit]


    Hier wiederrum kann ich zwar auf "Ok" klicken,aber es passiert wieder nichts.

  • Das geht dann so:

    Spoiler anzeigen
    [autoit]

    MsgBox(0,"","Drücke jetzt auf Tab und dann auf OK um das Programm zu starten!")
    schreiben()
    Func schreiben()
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")
    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")
    EndFunc

    [/autoit]

  • Aber am einfachsten wäre es ja so:

    Spoiler anzeigen
    [autoit]


    HotKeySet("{TAB}", "schreiben")
    HotKeySet("{ESC}", "Terminate")

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

    While 1
    Sleep(100)
    WEnd

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

    Func schreiben()
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")
    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

    [/autoit]


    Jetzt funktioniert es so, immer wenn du auf die Taste Tab drückst, dann wird die Funktion schreiben ausgeführt.
    Das Programm kannst du mit der Taste ESC Beenden.

  • Danke euch allen. :)
    Wäre es nun auch noch möglich einen Hotkey einzubauen um das Script zu stoppen?
    Es sollte nach dem Stop immernoch möglich sein es wieder per Hotkey weiterlaufen zulassen.
    Die Hilfe will auch nichts ausspucken.

  • Hi,
    die Hilfe spuckt nahezu das ganze script zum Pausieren aus, musst nur mal unter Hotkeyset gucken :).

    Hier:

    Spoiler anzeigen
    [autoit]

    Global $Paused
    HotKeySet("{TAB}", "schreiben")
    HotKeySet("{ESC}", "Terminate")
    HotKeySet("{F1}", "pause")

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

    While 1
    Sleep(100)
    WEnd

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

    Func schreiben()
    Run ("notepad.exe")
    Winwaitactive ("Unbenannt")
    Sleep (200)
    Send ("Hiho")
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho 2")
    Sleep (200)
    Send ("{enter}")
    Sleep (500)
    Send ("Hiho3")
    Sleep (200)
    Send ("{enter}")
    Sleep (2000)
    Send ("5")
    Send ("{enter}")
    Sleep (1000)
    Send ("4")
    Send ("{enter}")
    Sleep (1000)
    Send ("3")
    Send ("{enter}")
    Sleep (1000)
    Send ("2")
    Send ("{enter}")
    Sleep (1000)
    Send ("1")
    Sleep (1000)
    Send ("!{F4}")
    Send ("{right}")
    Send ("{enter}")
    EndFunc

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

    Func Terminate()
    Exit
    EndFunc

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

    func pause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    WEnd
    EndFunc

    [/autoit]