AutoIt

AutoIt

Basisdaten

Entwickler Jonathan Bennett & Team
Erscheinungsjahr Januar 1999
Aktuelle Version v3.3.16.1
(19. September 2022)
Betriebssystem Windows
Programmier­sprache 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.

Funktion

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:

  • Erstellen von GUIs inklusive Nachrichtenfenstern und Eingabeboxen
  • Automatisches Senden von Nutzereingaben und Tastenanschlägen an Anwendungen sowie individuelle Steuerung innerhalb von Anwendungen
  • Nutzung von COM (Component Object Modelling)-Objekten
  • Aufruf von Funktionen einer Win32-DLL
  • Aufruf von Funktionen aus der WinAPI
  • Ausführen von Konsolen-Applikationen und Zugriff auf Standard-Datenströme
  • Einbinden von Dateien in die kompilierte Datei, die zu einem definierten Zeitpunkt extrahiert werden können
  • Abspielen von Sound-Dateien, Pause, Weiter, Stopp, Suchen, aktuelle Wiedergabeposition sowie Länge des Sounds
  • Ausführung komplizierter mathematischer Berechnungen
  • Kommunikation via TCP- und UDP-Protokoll
  • Unicode-Unterstützung ab Version 3.2.4.0
  • Unterstützung von ActiveX-Abläufen (WSH/VBScript) mit der Erweiterung „AutoItX“
  • Datenbankzugriff (zum Beispiel auf SQLite [im Installationspaket])
  • Automatisierung des Internet Explorers
  • Automatisierung von Microsoft Word und Microsoft Excel

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.

Beispiel für ein AutoIt-Skript

$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).

Beispiel für ein erweitertes AutoIt-Skript

#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.

Erweiterungen und Zusatzprogramme

  • Es existiert eine angepasste Version ("SciTE4AutoIt3") von SciTE als integrierte Entwicklungsoberfläche (IDE) für AutoIt. Der Freeware-Programm-Editor unterstützt Syntaxhervorhebung sowie Autovervollständigen und einige Makros zur Erstellung häufig benötigter Syntaxelemente. SciTE4AutoIt3 steht kostenlos zum Download auf der AutoIt-Homepage zur Verfügung.
  • Über sogenannte User Defined Functions (UDFs) oder auch Includes stehen zahlreiche Zusatzfunktionen zur Verfügung; durch von der Community erstellte Erweiterungen umfasst der aktuelle Funktionsumfang im Vergleich zur obigen Liste weitaus mehr.
  • Der KODA-Form-Designer ermöglicht die vereinfachte Erstellung grafischer Oberflächen (GUI, Graphical User Interfaces) für AutoIt-Skripte.
  • Tidy „reinigt“ ein AutoIt-Skript, indem es Einrückungen, Groß-/Kleinschreibungen, Kommentare und einiges mehr korrigiert.
  • Mit dem CodeWizard können Messageboxen (Nachrichtenfenster), Inputboxen (Eingabefenster) und vieles mehr generiert werden. Es existiert eine Onlineversion des Messagebox-Generators.
  • AutoIt Window Info ist eine Erweiterung, die dazu dient, Informationen eines Fensters oder des Mauszeigers auszulesen (z. B. die Fenster- oder Mausposition, Pixelfarben, Control-Koordinaten).
  • Die oben genannten Punkte sind bereits alle in SciTE4AutoIt3 integriert.

Siehe auch

  • AutoHotkey – Alternative Software unter Open-Source-Lizenz, die sich aus der Version 2 von AutoIt ableitet

Einzelnachweise

  1. Jon: AutoIt Source Code. In: AutoItScript Forum. 8. Februar 2005, abgerufen am 4. September 2018 (englisch).
  2. Change-Log