AutoIt für Anfänger geschlossen 

  • Ersteller Ersteller FizzeBu
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
F

FizzeBu

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:
20101024130715qpa2k1ns6.png

Dann noch die Vollversion von SciTE:
201010241311146n4c5p8kx.png

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

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:
Code:
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:

Code:
MsgBox(64, "Hello World!", "Das ist eine Hello World Mesagebox mit einem Info-Icon.")
MsgBox(64, "Hello World!", "Das ist die zweite Mesagebox, wir könnten ewig so weitermachen. Aber jetzt lassen wir es lieber.")
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:

Code:
MsgBox(0, "Schritt 1", "Bitte Klick auf Okay")
Sleep(2000)
MsgBox(0, "Schritt 2","Jetzt sind 2 Sekunden um.")
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:
Code:
$variablenname = WERT
Man kann Variablen wie schon gesagt ändern und das geht so:
Code:
$variablenname = 15 oder
$variablenname = 15 + 2 oder
$variablenname = $anderevariable + 9 oder
$variablenname = +1 (was die Kurzform von $variablennamen = $variablenname + 1 ist) oder
$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:

Code:
$yesorno = MsgBox(36, "Frage", "Ja oder Nein?")
MsgBox(0, "Rückgabewert", "Der Rückgabewert ist " & $yesorno)
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:
Code:
$text1 = "Text 1"
$text2 = "Text 2"
$text1und2 = "Es gibt " & $text1 & " und " & $text2 & "."
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:
Code:
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:

Code:
$time = InputBox("Zeit", "Bitte gib die Länge der Skriptpause in Sekunden an:")
$timeforsleep = $time * 1000
Sleep($timeforsleep)
MsgBox(0,"Info", "Jetzt wurden " & $time &" Sekunden gewartet.")
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:

Code:
$var = InputBox("Frage", "Heißt du Hans-Peter? Nur mit Ja oder Nein antworten!")
If $var = "Ja" Then
MsgBox(0, "Begrüßung", "Hallo Hans-Peter, lange nicht mehr gesehen.")
ElseIf $var = "Nein" Then
MsgBox(0x, "Begrüßung", "Hallo, du nicht Hans-Peter :P")
Else
MsgBox(0, "Fail", "Nur mit Ja oder Nein antworten.")
EndIf
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:
Code:
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:

Code:
$name = InputBox("Fenstertitel", "Wie heißt der gesuchte Fesntertitel?")
$var = WinExists($name)
If $var = 1 Then
MsgBox(0, "Win", "Das Fenster existiert.")
ElseIf $var = 0 Then
MsgBox(0, "Fail", "Das Fenster existiert nicht.")
EndIf
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

Code:
While 1
Sleep(5000)
MsgBox(0,"Meldung", "Schon wieder sind 5 Sekunden vorbei.")
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.

Code:
$var = 1
While $var = 1
Sleep(10000)
$yesorno = MsgBox(36, "Frage", "Soll das Skript nochmal 10 Sekunden warten?") If $yesorno = 7 Then
$var = 0
Exit
EndIf
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:

Code:
While 1
Send("Angriffstaste")
Sleep(50)
Send("PickUpTaste")
Sleep(50)
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
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten