Controls

Eines der besten Features von AutoIt v3 ist die Möglichkeit, direkt mit verschiedenen Arten von Controls (Bedienelementen) zu arbeiten. Fast alles, was man in einem Fenster sieht, ist in irgendeiner Form ein Control: Ein Button, eine Listbox, ein Eingabefeld (Edit), ein statischer Text..., all das sind Controls. Notepad ist übrigens einfach ein großes Eingabefeld (Edit)! Weil AutoIt direkt mit dem Control zusammen arbeitet, ist die Verwendung von Funktionen zuverlässiger als das Senden von Tastendrücken.

Hinweis: AutoIt kann nur mit standard-konformen Windows-Controls zusammenarbeiten - manche Anwendungen haben ihre eigenen Spezial-Controls, die vielleicht so ähnlich wie die Microsoft-Controls aussehen, aber oft nicht automatisierbar sind. Ausprobieren!

Hilfswerkzeug zur Identifikation von Controls

Mit dem AutoIt Window Info Tool kann die Maus über Controls gehalten werden, um alle relevanten Informationen darüber zu erhalten. Die Controls enthalten folgende Eigenschafts-Informationen:

Immer wenn eine Control...()-Funktion eine ControlID als Parameter erwartet (das sind die meisten), kann eine der folgenden Methoden angewendet werden. Die Methode, die gewählt wird, hängt von den persönlichen Vorlieben und den Ergebnissen der Anwendung des AutoIt-Window-Info-Tools ab. Im Allgemeinen ist die beste Methode die Verwendung der Control-ID, während die anderen Methoden verwendet werden, falls die ControlID nicht verfügbar oder nicht nur einmal vorhanden ist. Oft hat bei statischen Textcontrols jeder Teil die gleiche ControlID, sodass andere Verfahren nötig werden.

Eine oder mehrere Eigenschaften werden im ControlID-Parameter des Control-Befehls in diesem Format verwendet:

[PROPERTY1:Value1; PROPERTY2:Value2]

Zu beachten: Wird dieses spezielle Format nicht verwendet, wird der Parameter als ControlID (falls numerisch) oder als ClassnameNN/Text des Controls (falls ein String) betrachtet. Obwohl das spezielle Format langatmiger ist als diese Methoden, ist es weniger mehrdeutig.

Falls ein String ein Semikolon (";") enthalten muss, so muss es doppelt angegeben werden (";;").

Beispiel 1: Sendet Text an das erste Edit-Control im Notepad-Fenster

ControlSend("Unbenannt - Editor", "", "[CLASS:Edit; INSTANCE:1]", "Dies ist ein bisschen Text")

oder

ControlSend("Unbenannt - Editor", "", "[CLASSNN:Edit1]", "Dies ist ein bisschen Text")

oder

ControlSend("Unbenannt - Editor", "", "Edit1", "Dies ist ein bisschen Text")

Beispiel 2: Ein Klick auf die Control-ID 254 in "Mein Fenster"

ControlClick("Mein Fenster", "", "[ID:254]")

oder

ControlClick("Mein Fenster", "", 254)

 

Um zum Beispiel den Text des .NET Winforms "textBoxFolder" Steuerelements auf "C:\Some\Folder" zu setzen

ControlSetText("Mein Fenster", "", "[NAME:textBoxFolder]", "C:\Some\Folder")

Beispiel 3: Ein Klick auf die zweite Instanz eines "Button"-Controls, welcher den Text "Fertig" enthält

ControlClick("Mein Fenster", "", "[CLASS:Button; TEXT:Fertig; INSTANCE:2]")

Control-Handle (HWND)

Mit der ControlGetHandle-Funktion kann das Handle oder HWND eines Controls bestimmt werden. Ein Handle ist ein eindeutiger Wert, den Windows für Controls vergibt. Das Handle verändert sich jedesmal, wenn das Control erstellt wird. Diese Methode ist eigentlich nur für Nutzer gedacht, die im Umgang mit Handles geübt sind.

Siehe auch im Inhalt unter Funktionsreferenz \ Fenstermanagement \ Controls eine Liste der Funktionen, die mit Controls zusammenarbeiten.