AutoIt für Anfänger

  • Andere Sprache

  • FizzeBu
  • 6129 Aufrufe 0 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • AutoIt für Anfänger

    Habe kein AutoIt Tut gefunden und dachte ich poste dann mal meins;D

    Einführung
    So, ich will jetzt auch bei den AutoIt Tutorials mitmischen, es gibt zwar schon viele, aber eben meins noch nicht;D Als erstes will ich den Download, die Installation und die wie man die deutsche Hilfe bekommt.
    Wir gehen auf die Seite: AutoIt v3 - Downloads
    Als erstes holen wir uns die neueste AutoIt Version:

    Dann noch die Vollversion von SciTE:

    Nun noch die Deutsche Hilfe Datei: Deutsche Hilfeübersetzung für www.autoit.de

    Jetzt installieren wir AutoIt und SciTE, das sollte jeder selber hinkriegen. Die Hilfsdatei einfach ersetzen.
    So, jetzt haben wir die Grundlage für die Arbeit mit AutoIt geschaffen. Bevor wir aber anfangen, erkläre ich euch, wie ich die folgenden Schritte aufbaue. Als erstes werde ich euch sagen, was wir üerhautpt tun, dann mit welcher Funktion, dann den Code, und dann die Erklärung, falls nötig.

    Und dann noch ganz wichtig: Ich habe selber AutoIt durch Tutorials gelernt, das heißt manche Sachen habe ich an einem Vorbild geschrieben. Ich hoffe, alle Leute die sich eventuell wieder erkennen, findens Okay;D

    Okay dann bleibt nicht mehr viel zu sagen, ausser, dass ich das Tut erweitern werde, wenn ich mal wieder Zeit hab.

    1."Hello World"
    Unser erstes Skript wird eine "Hello World" MessageBox. Um eine MessaeBox zu erstellen benutzen wir die Funktion MsgBox Jede Funktion hat verschiedene Parameter. Wenn wir uns die MsgBox Funktion in der Hilfe ansehen können wir diese in Erfahrung bringen. In der Hilfe steht:

    Quellcode

    1. MsgBox ( flag, "title", "text" [, timeout [, hwnd]] )
    Flag legt die Art des Messagebox fest. Es gibt viele Flags für MessageBoxen, experimentert einfach mal nach Lust und Laune. "title" legt den Titel und "text" legt den Text der Mesagebox fest. Text, oder auch String genannt, wird immer in " " Anführungszeichen gesetzt, so erkennt AutoIt, dass es ein String ist. Allesd was in [ ] Eckigen Klammern steht ist optional und muss nicht angegeben werden.
    Code:

    Quellcode

    1. MsgBox(64, "Hello World!", "Das ist eine Hello World Mesagebox mit einem Info-Icon.")
    2. MsgBox(64, "Hello World!", "Das ist die zweite Mesagebox, wir könnten ewig so weitermachen. Aber jetzt lassen wir es lieber.")
    3. Exit
    Erklärung:
    64 ist die Flag. 64 steht für das Info-Icon. Mann kann verschiedene Flags addieren, indem man sie addiert, 36 zum Beispiel setzt sich aus 4 und 32 zusammen, was für ein Fragezeichen-Icon und Ja-Nein Buttons steht.
    Exit beendet das Skript, das muss man zwar nicht machen, mach ich aber trozdem, der Sicherheit wegen, nicht, dass mir irgendein Skript mein Speicher belegt.

    MesageBoxen werden benutzt um etwas anzuzeigen, oder um eine Frage zu stellen, eurer Fantasie ist keine Grenzen gesetzt!

    2.Sleep
    In 1. haben wir gelernt eine Mesagebox zu erzeugen. Diesen Befehl benutzen wir dieses mal wieder, aber jetzt pausieren wir das Skript für eine Zeit lang und lassen erst dann die zweite Mesagebox anzeigen. Das machen wir mit Sleep. Sleep hat keine großartigen Parameter, nur delay dort legen wir fest, wie lange das Skript pausiert werden soll.
    Code:

    Quellcode

    1. MsgBox(0, "Schritt 1", "Bitte Klick auf Okay")
    2. Sleep(2000)
    3. MsgBox(0, "Schritt 2","Jetzt sind 2 Sekunden um.")
    4. Exit
    Erklärung:
    Die Zeit für Sleep muss in Milisekunden angegeben werden, das ist nicht wirklich schwierig, man hängt einfach an die gewünschte Sekunenzahl drei Nullen an.

    Sleep wird sehr häufig verwendet, zum Beispiel um eine Pause zwischen Angriff- und Pickupaktionen zu haben. Der große Nachteil ist, dass Sleep das ganze Skript pausiert, wenn man komplexere Skripte hat, kann das sehr störend sein.

    3. Variablen
    Variablen sind sehr wichtig im Umgang mit AutoIt, darum bekommen sie auch ein relativ langes Kapitel.
    In Variablen kann man grundsätzlich zwei Werte abspeichern: Zahlen und Strings. Das praktische an Variablen ist, dass man ihren Wert beliebig oft verändern kann, man kann Rechnungen ausführen oder Strings erweitern. Variablen haben immer ein $ Dollarzeichen vor dem Namen, so erkennt AutoIt, dass es eine Variable ist. AutoIt achtet auf Groß und Kleinschreibung, also passt auf. Variablen müssen vor der Benutzung deklariert werden, und zwar so:

    Quellcode

    1. $variablenname = WERT
    Man kann Variablen wie schon gesagt ändern und das geht so:

    Quellcode

    1. $variablenname = 15 oder
    2. $variablenname = 15 + 2 oder
    3. $variablenname = $anderevariable + 9 oder
    4. $variablenname = +1 (was die Kurzform von $variablennamen = $variablenname + 1 ist) oder
    5. $variablenname = "Mein Text"
    Wir kennen schon MesagBoxen. Bisher haben wir einfach darauf gewartet, dass geklickt wird und dann das Skript weiter ausgeführt, aber man will ja zum Beispiel auch Fragen in eine Mesagbox verpacken, aber wie kriegt man raus welcher Button gedrückt wurde? Die Antwort lautet: Variablen. Man deklariert eine Variable, zum Beispiel $yesorno und setzt als Wert die MesageBox ein. Die Variable speichert dann den Rückgabewert der MesageBox ab.
    Code:

    Quellcode

    1. $yesorno = MsgBox(36, "Frage", "Ja oder Nein?")
    2. MsgBox(0, "Rückgabewert", "Der Rückgabewert ist " & $yesorno)
    3. Exit
    Erklärung:
    $yesorno wird in der zweiten Messagebox angezeigt. Das geschieht mit & $yesorno, weil man mit "Der Rückgabewert ist $yesorno" alles anzeigt was in " " Anführungszeichen steht. Das heißt es würde "Der Rückgabewert ist $yesorno" angezeigt wir wollen aber den Rückgabewert zeigen, darum benutzen wir & $variablenname um eine Variable in einem Sring anzuzeigen.
    Beispiel an einer Variablen:

    Quellcode

    1. $text1 = "Text 1"
    2. $text2 = "Text 2"
    3. $text1und2 = "Es gibt " & $text1 & " und " & $text2 & "."
    4. MsgBox(0, "Text1und2", $text1und2)
    $text1und2 beinhaltet jetzt den String "Es gibt Text 1 und Text 2. " experimentiert einfach mal mit Variablen, ändert Text1 oder Text 2, es gibt schier unbegrenzt Möglichkeiten sie einzusetzen. Lasst zum Beispiel in einer Variablen eine einfache Rechnung ausführen und zeigt das Ergebnis mithilfe einer anderen Variable an.

    4.InputBox
    So, jetzt haben wir ziemlich viel trockenes Zeugs gelernt. Bisher hat das Skript sich einfach nur stur ausgeführt und nicht auf den User geachtet. Wir wollen aber, dass der User mitbestimmen kann, was als nächstes geschieht. Das kann man zum Beispiel mit einer InputBox machen. Wenn wir in die Funktionsreferrenz schauen finden wir einige Parameter:

    Quellcode

    1. InputBox ( "title", "prompt" [, 'default' [, 'password char' [, width [, height [, left [, top [, timeout [, hwnd]]]]]]]] )
    Da wir alle nötigen Parameter schon kennen ist das nicht viel Arbeit. Alles was zu sagen ist, ist, dass "promt" gleichbedeutend wie "text" ist. So, wir kennen den Befehl, aber wie können wir das Ergebnis abspeichern? Klar, mit einer Variablen. Wir wollen ein Skript, das eine User definierte Zeitz wartet, bevor es die nächste MessageBox öffnet.
    Code:

    Quellcode

    1. $time = InputBox("Zeit", "Bitte gib die Länge der Skriptpause in Sekunden an:")
    2. $timeforsleep = $time * 1000
    3. Sleep($timeforsleep)
    4. MsgBox(0,"Info", "Jetzt wurden " & $time &" Sekunden gewartet.")
    5. Exit
    Erklärung:
    $timeforsleep rechnet die Benutzereingabe in ein für AutoIt passendes Format um. Der Rest sollte selbsterklärend sein.

    5.If-Then - ElsIf-Then - Else - EndIf
    If testet, ob eine bestimmte Bedingung erfült worden ist, zum Beispiel ob der Rückgabewert einer Messagebox "Ja" entspricht, ElseIf testet, falls die erste Bestimmung nicht erfüllt wurde, ob eine andere Bestimmung erfüllt ist, man kann ElseIF beliebig oft verwenden. Else wird ausgeführt, wenn keine bestimmte Bedingung erfült ist.
    Code:

    Quellcode

    1. $var = InputBox("Frage", "Heißt du Hans-Peter? Nur mit Ja oder Nein antworten!")
    2. If $var = "Ja" Then
    3. MsgBox(0, "Begrüßung", "Hallo Hans-Peter, lange nicht mehr gesehen.")
    4. ElseIf $var = "Nein" Then
    5. MsgBox(0x, "Begrüßung", "Hallo, du nicht Hans-Peter :P")
    6. Else
    7. MsgBox(0, "Fail", "Nur mit Ja oder Nein antworten.")
    8. EndIf
    9. Exit
    Erklärung:
    If ist ziemlich einfach und man sollte jetzt keine Erklärung dafür brauchen.

    6.WinExists
    Unser neu erworbenes If-Wissen können wir gleich hier einsetzen. Wir testen, ob ein Fenstername existiert. Wir legen uns aber nicht auf einen Fensternamen fest, sondern finden den gesuchten Fensternamen mithilfe einer InputBox heraus. als erstes schauen wir uns aber die Funktion WinExists an:

    Quellcode

    1. WinExists ( "title" [, 'text'] )

    Dieses mal ist "title" aber nicht der Titel von einem von AutoIt generierten Fesnter, sondern von dem Fenster, welches gefunden werden soll.
    Code:

    Quellcode

    1. $name = InputBox("Fenstertitel", "Wie heißt der gesuchte Fesntertitel?")
    2. $var = WinExists($name)
    3. If $var = 1 Then
    4. MsgBox(0, "Win", "Das Fenster existiert.")
    5. ElseIf $var = 0 Then
    6. MsgBox(0, "Fail", "Das Fenster existiert nicht.")
    7. EndIf
    8. Exit


    Es gibt viele ähnliche Funktionen, zum Beispiel WinActive, WinWaitActive, etc.

    7.While Schleife
    Bisher ist das Skript einfach abgelaufen und hat sich dann beendet. Wir wollen aber, dass ein Skript solange abläuft. bis der User es schließen will. Das geht mit einer While-Schleife. While-Schleifen sind einfach und sollten kein Problem darstellen.

    7.1
    Das Skript führt etwas unendlich lang aus. Das geschieht mit While 1. While 1 steht für While 1=1, also unendlich lang

    Quellcode

    1. While 1
    2. Sleep(5000)
    3. MsgBox(0,"Meldung", "Schon wieder sind 5 Sekunden vorbei.")
    4. WEnd
    Erklärung:
    Sleep steht für alle Aktionen die ausgeführt werden sollen, zum Beispiel Angriff und Pickup. Der Rest sollte selbsterklärend sein.

    7.2
    Das Skript tut etwas, der Benutzer kann selbst entscheiden wann es enden soll.

    Quellcode

    1. $var = 1
    2. While $var = 1
    3. Sleep(10000)
    4. $yesorno = MsgBox(36, "Frage", "Soll das Skript nochmal 10 Sekunden warten?") If $yesorno = 7 Then
    5. $var = 0
    6. Exit
    7. EndIf
    8. WEnd
    Erklärung:
    Sleep steht auch hier für alle Aktionen die ausgeführt werden sollen.

    8.Send
    So, jetzt kommen wir zu einer sehr wichtigen Funktion: Send. AutoIt ist dazu ausgelegt um Bots zu schreiben. Bei vielen MMORPGs muss man viele Monster töten um wichtige Sachen zu bekommen oder zu leveln. Warum sich selber die Mühe machen, wenn man alles AutoIt machen lassen kann? Send kann einen Tastenanschlag simulieren, verpacken wir alles in eine While-Schleife:
    Code:

    Quellcode

    1. While 1
    2. Send("Angriffstaste")
    3. Sleep(50)
    4. Send("PickUpTaste")
    5. Sleep(50)
    6. Wend
    Bei den Tasten muss man beachten, dass Sonderzeichen wie +,#,!,^,° etc. in { } Geschweifte Klammern zu setzen. Strg, Alt, Enter, Leer haben eigene Sonderzeichen oder Namen. Hier die Liste aus der Hilfe:

    Send Befehl (wenn Flag = 0) |Resultierender Tastendruck
    {!} | !
    {#} |#
    {+} |+
    {^} |^
    {{} |{
    {}} |}
    {SPACE} |SPACE (Leertaste)
    {ENTER} |Eingabetaste auf der Haupttastatur
    {ALT} |ALT
    {BACKSPACE} oder {BS} | BACKSPACE (Rücktaste)
    {DELETE} oder {DEL} |DELETE Entfernen (Entf)
    {UP} |Nach-Oben-Taste
    {DOWN} |Nach-Unten-Taste
    {LEFT} |Nach-Links-Taste
    {RIGHT} |Nach-Rechts-Taste
    {HOME} |HOME (Pos1 – Taste)
    {END} |END (Ende - Taste)
    {ESCAPE} oder {ESC} |ESCAPE- Taste
    {INSERT} oder {INS} |INS (EINFÜGEN (Einfg)-Taste)
    {PGUP} |PageUp (Bild-Auf-Taste)
    {PGDN} |PageDown (Bild-Ab-Taste)
    {F1} - {F12} |Funktionstasten
    {TAB} |TAB(Tabulator – Taste)
    {PRINTSCREEN} |Druck-Taste
    {LWIN} |linke Windows Taste
    {RWIN} |rechte Windows Taste
    {NUMLOCK on} |NUMLOCK (Num)-Taste (on/off/toggle)
    {CAPSLOCK off} |CAPSLOCK-Taste (FESTSTELLTASTE) (on/off/toggle)
    {SCROLLLOCK toggle} |ROLLEN-Taste (on/off/toggle)
    {BREAK} |STRG+Break = STRG+UNTERBRECHUNG Taste
    {PAUSE} |PAUSE-Taste
    {NUMPAD0} - {NUMPAD9} |Ziffernblock 0-9 (Numpad = numerisches Tastenfeld)
    {NUMPADMULT} |Multiplizieren auf Numpad
    {NUMPADADD} |Addieren auf Numpad
    {NUMPADSUB} |Subtrahieren auf Numpad
    {NUMPADDIV} |Dividieren auf Numpad
    {NUMPADDOT} |Punkt (Komma) auf Numpad
    {NUMPADENTER} |Eingabe-Taste auf Numpad
    {APPSKEY} |Windows-Programm Taste
    {LALT} |Linke ALT-Taste
    {RALT} |Rechte ALT-Taste
    {LCTRL} |Linke STRG-Taste
    {RCTRL} |Rechte STRG-Taste
    {LSHIFT} |Linke Shift-Taste
    {RSHIFT} |Rechte Shift-Taste
    {SLEEP} |Computer PAUSE Taste
    {ALTDOWN} |Hält die ALT-Taste gedrückt, bis {ALTUP} gesendet wird
    {SHIFTDOWN} |Hält die SHIFT-Taste gedrückt, bis {SHIFTUP} gesendet wird
    {CTRLDOWN} |Hält die STRG-Taste gedrückt, bis {CTRLUP} gesendet wird
    {LWINDOWN} |Hält die linke Windows-Taste gedrückt, bis {LWINUP} gesendet wird
    {RWINDOWN} |Hält die rechte Windows-Taste gedrückt, bis {RWINUP} gesendet wird
    {ASC nnnn} |Sendet die ALT+nnnn ASCII-CODE-Tastenkombination
    {BROWSER_BACK} |Nur 2000/XP: Wählt den Browser-Button "Zurück"
    {BROWSER_FORWARD} |Nur 2000/XP: Wählt den Browser-Button "Vorwärts"
    {BROWSER_REFRESH} |Nur 2000/XP: Wählt den Browser-Button "Aktualisieren"
    {BROWSER_STOP} |Nur 2000/XP: Wählt den Browser-Button "Stop"
    {BROWSER_SEARCH} |Nur 2000/XP: Wählt den Browser-Button "Suche"
    {BROWSER_FAVORITES} |Nur 2000/XP: Wählt den Browser-Button "Favoriten"
    {BROWSER_HOME} |Nur 2000/XP: Startet den Browser und geht zur Startseite
    {VOLUME_MUTE} |Nur 2000/XP: Stellt Lautsprecher auf Stumm
    {VOLUME_DOWN} |Nur 2000/XP: Reduziert die Lautstärke
    {VOLUME_UP} |Nur 2000/XP: Vergrößert die Lautstärke
    {MEDIA_NEXT} |Nur 2000/XP: Wählt den nächsten Track im Media Player
    {MEDIA_PREV} |Nur 2000/XP: Wählt den vorhergehenden Track im Media Player
    {MEDIA_STOP} |Nur 2000/XP: Stoppt Media Player
    {MEDIA_PLAY_PAUSE} |Nur 2000/XP: Wiedergabe/Pause Media Player
    {LAUNCH_MAIL} |Nur 2000/XP: Startet die Standard-E-Mail-Anwendung
    {LAUNCH_MEDIA} |Nur 2000/XP: Startet den Media Player
    {LAUNCH_APP1} |Nur 2000/XP: Startet das Anwender-Programm 1
    {LAUNCH_APP2} |Nur 2000/XP: Startet das Anwender-Programm 2