AutoIt
| |
---|---|
Basisdaten
| |
Entwickler | Jonathan Bennett & Team |
Erscheinungsjahr | Januar 1999 |
Aktuelle Version | v3.3.16.1 (19. September 2022) |
Betriebssystem | Windows |
Programmiersprache | C++ |
Kategorie | Skriptsprache |
Lizenz | Freeware |
deutschsprachig | ja |
www.autoitscript.com |
AutoIt ist eine Software zum Ausführen von Skripten, mit denen hauptsächlich Abläufe unter Microsoft Windows automatisiert, aber auch komplette Windows-Programme geschrieben werden können. AutoIt ist Freeware und läuft unter NT, 2000, XP, Vista, 7, 8, 10 und 11. Bis Version 2 war es Open-Source und auch von Version 3 wurden Teile des Quellcodes, unter einer restriktiven Lizenz, veröffentlicht. Aktuell sind nur noch einige Dokumentationsbuilddateien abrufbar.[1] Das Programm stellt dem Nutzer eine BASIC-ähnliche Skriptsprache zur Verfügung. Außerdem enthält es einen Interpreter und einen Compiler, mit dem ausführbare Dateien (exe-Dateien) erstellt werden können; damit können AutoIt-Skripte auch auf Computern ausgeführt werden, auf denen AutoIt nicht installiert ist.
AutoIt-Skripte simulieren unter anderem Tastenanschläge und Mausklicks. Der Ablauf kann davon abhängig gemacht werden, dass ein bestimmter Prozess läuft oder beendet ist, oder dass ein bestimmtes Fenster aktiviert, geöffnet oder geschlossen wird. Außerdem können Fenster minimiert, versteckt, aktiviert oder geschlossen werden; Dateien und Verzeichnisse können ausgeführt, kopiert, verschoben, umbenannt oder gelöscht werden. Auch der Inhalt der Zwischenablage und die Registrierungsdatenbank können bearbeitet werden. Mit Version 3 sind (Stand August 2008) folgende Operationen möglich:
Mit Version 3.2[2] wurde AutoIt stark erweitert und zahlreiche Programmfehler wurden beseitigt. Außerdem können Skripte als a3x-Dateien abgelegt werden, und die GUI-Funktionen wurden verbessert.
$sName = InputBox("Fenstertitel", "Geben Sie hier Ihren Namen ein!")
Es wird ein Eingabefeld (englisch input box) angezeigt, das dazu auffordert, seinen Namen einzugeben. Der Name wird in die Variable $sName
gespeichert.
MsgBox(64, "Fenstertitel", "Hallo " & $sName & "!")
Mit diesem Befehl wird ein Meldungsfeld (englisch message box) angezeigt, welches den Inhalt der Variablen $sName
ausgibt. Der Wert 64 kennzeichnet das Fenster als „Info-Box“ (möglich sind auch Warnungen, Fragen oder Fehlermeldungen).
#cs Startet einen Kommentar-Block
Standard-Präfixe für Variablen:
- $h - Handle von z. B. einem Fenster oder einer Datei
- $id - ID's von Controls, wie z. B. Buttons und Eingabefelder
- $s - Strings (Zeichenketten)
- $i - Integers (Ganzzahlen)
Variablennamen werden normalerweise in Englisch verfasst! (Kein Standard)
#ce ; Beendet einen Kommentar-Block
#include <FTPEx.au3> ; Einbinden von mehreren vordefinierten Scripten.
#include <GUIConstantsEx.au3>
;############# Änderbare Daten ################
$sIP = "IP von FTP-Server"
$sUser = "Benutzername vom FTP-Benutzer"
$sPassword = "Passwort vom FTP-Benutzer"
$sFTP_Path = "Pfad auf dem Server"
;##############################################
$hGUI = GUICreate("TestGUI", 445, 339) ; In der Mitte des Bildschirms wird mit der X-Koordinate 445, und der Y-Koordinate 339 ein Fenster gezeichnet.
GUISetBkColor(0xBFCDDB) ; Die Hintergrundfarbe wird vom Standard geändert.
$idSend = GUICtrlCreateButton("Versenden", 0, 288, 203, 49) ; Der "Versenden"-Knopf wird erstellt.
$idEdit = GUICtrlCreateEdit("", 0, 0, 441, 289) ; Ein Eingabefeld wird erstellt.
GUICtrlSetData($idEdit, "Beispiel-Text" & @CRLF & "Nächste Zeile") ; Ein Text wird in das Eingabefeld geschrieben. @CRLF markiert einen Zeilenumbruch.
GUICtrlSetBkColor($idEdit, 0xC0C0C0) ; Die Hintergrundfarbe des Eingabefeldes wird geändert.
GUISetState(@SW_SHOW) ; Das Fenster wird angezeigt.
While 1 ; Eine While-Schleife wird geöffnet, die immer wieder bestimmte Sachen abfragt. Endlosschleife, in diesem Fall die "Messageloop" des Fensters.
$iMsg = GUIGetMsg() ; Die Variable die abgefragt werden soll, wird immer wieder neu erstellt. (Einmal pro durchlauf der Schleife.)
Switch $iMsg ; Die Variable wird als Ereignisauslöser definiert.
Case $GUI_EVENT_CLOSE ; Falls der "Schließenknopf"(X oben rechts in der Ecke) gedrückt wird,
Exit ; beendet sich das Script.
Case $idSend ; Falls der "Versenden"-Button gedrückt wird,
_Put_on_FTP() ; wird die "_Put_on_FTP" Funktion ausgeführt.
EndSwitch ; Die Abfrage der Variable $nMsg wird beendet.
WEnd ; Markiert das Ende einer "While"-Schleife(n) definition. Falls die Schleife endet, arbeitet das Skript von hier weiter.
Func _Put_on_FTP() ; Benutzerdefinierte Funktionen haben normalerweise das Präfix "_" und der Name sollte auch in Englisch gehalten sein.
Local $sFilePath = "ftp.txt" ; Eine lokale Variable wird deklariert und ein Wert zugewiesen (diese ist nur in dieser Funktion verfügbar).
$hFile = FileOpen($sFilePath, 10) ; Eine Datei wird zum Schreiben geöffnet, und falls sie nicht existiert, wird diese erstellt.
$sText = GUICtrlRead($idEdit) ; Der Text aus dem Eingabefeld wird eingelesen.
FileWrite($hFile, $sText) ; In die zuvor geöffnete Datei wird der Text aus der Variablen $sText geschrieben.
FileClose($hFile) ; Die Datei wird geschlossen und die Ressourcen wird freigegeben.
$hFTP = _FTP_Open("TestFTP") ; Die FTP-Sitzung wird gestartet.
$hFTP_Connection = _FTP_Connect($hFTP, $sIP, $sUser, $sPassword) ; Eine FTP-Verbindung zum angegebenen Server wird aufgebaut.
If @error <> 0 Then ; Falls @error ungleich 0 ist (ein Fehler ist aufgetreten),
MsgBox(0, "Error", "Der FTP-Server scheint nicht erreichbar zu sein.") ; Eine Fehlermeldung wird ausgegeben.
ElseIf @error = 0 Then ; Falls @error gleich 0 ist (kein Fehler ist aufgetreten),
_FTP_FilePut($hFTP_Connection, $sFilePath, $sFTP_Path) ; wird Die Testdatei auf den Server geschrieben.
If @error Then ; Falls es einen Fehler gibt, ...
MsgBox(0, "Error", "Es trat ein Fehler beim Übertragen auf.") ; ... wird eine Fehlermeldung angezeigt, ansonsten ...
Else ; Wenn kein Fehler aufgetreten ist,
MsgBox(0, "Erfolg", "Die Datei wurde erfolgreich übertragen.") ; ... war die Operation erfolgreich.
EndIf ; Die If-Abfrage wird geschlossen.
EndIf ; Die erste If-Abfrage wird geschlossen.
_FTP_Close($hFTP) ; Die FTP-Verbindung wird geschlossen und die FTP-Sitzung wird beendet.
FileDelete($sFilePath) ; Die temporäre Datei wird gelöscht.
Return ; Funktion beenden und mit der eigentlichen Skript-Ausführung fortfahren.
EndFunc ; Markiert das Ende einer Funktion.