Controls

Eines der besten Features von AutoIt v3 ist die Möglichkeit, direkt mit verschiedenen Arten von Window Controls 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!

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:

Eine spezielle Beschreibung kann als der controlID-Parameter verwendet werden, der in den meisten der Funktionen Control ... () verwendet wird. Diese Beschreibung kann verwendet werden, um ein Steuerelement durch die folgenden Eigenschaften zu identifizieren:

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

@@SyntaxHighlighting@@ [PROPERTY1 : Value1; PROPERTY2:Value2] @@End@@

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

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

or

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

or

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

 

z. B. Ein Klick auf die Control-ID 254 in "Mein Fenster"

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

or

@@SyntaxHighlighting@@ ControlClick("Mein Fenster", "", 254) @@End@@

 

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

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

 

z. B. Ein Klick auf die zweite Instanz eines "Button"-Controls, welcher den Text "Fertig" enthält

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

 

 

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.