ControlClick


Sendet ein Maustasten- oder Mausradereignis (Klickereignis) an ein Control.

ControlClick [, Control-or-Pos, WinTitle, WinText, WhichButton, ClickCount, Options, ExcludeTitle, ExcludeText]

Parameter

Control-or-Pos

Wenn dieser Parameter leer ist, wird das Klickereignis an das oberste Control des Zielfensters gesendet bzw. an das Fenster selbst, wenn es keine Controls enthält. Sonst wird einer der zwei unten beschriebenen Modi verwendet:

Modus 1 (Position): Die X- und Y-Koordinaten relativ zur linken oberen Ecke des Fensters. Die X-Koordinate muss vor der Y-Koordinate und zwischen beiden wenigstens ein Leerzeichen oder Tabulator angegeben werden (Beispiel: X55 Y33). Wenn sich an den angegebenen Koordinaten ein Control befindet, wird das Klickereignis exakt mit den angegebenen Koordinaten gesendet. Wenn dort kein Control ist, wird das Ereignis an das Zielfenster selbst gesendet, und hat abhängig von der Art des Fensters möglicherweise keine Wirkung. Hinweis: In diesem Modus werden die Optionen X und Y des Options Parameters ignoriert.

Modus 2 (ClassNN oder Text): Entweder die ClassNN (Klassenname und Instanznummer) oder der Name/Text (Aufschrift/Inhalt) des Controls, wie sie mit dem "Window Spy" ermittelt werden können. Bei Angabe von Name/Text wird das Suchergebnis von der aktuellen Einstellung für SetTitleMatchMode beeinflusst.

Als Voreinstellung erhält Modus 2 den Vorzug gegenüber Modus 1. Für den (unwahrscheinlichen) Fall, dass ein Control einen Text oder eine ClassNN im Format  "Xnnn Ynnn" hat, würde es z.B. im Modus 2 bearbeitet. Um das zu ändern und Modus 1 unbedingt zu erzwingen, muss das Wort "Pos" in Options angegeben werden, wie das folgende Beispiel zeigt: ControlClick, x255 y152, WinTitle,,,, Pos.

Wenn mit dem HWND (window handle, ahk_id, eindeutige Identifikationsnummer) eines Controls gearbeitet werden soll, wird der Control Parameter leer gelassen und stattdessen ahk_id %ControlHwnd% als WinTitle Parameter angebeben. Das funktioniert auch für verborgene Controls, selbst wenn DetectHiddenWindows auf OFF gesetzt ist. Das HWND eines Controls kann z.B. mit ControlGet Hwnd, MouseGetPos oder DllCall ermittelt werden.

WinTitle

Der vollständige Titel oder ein Teil des Titels des Zielfensters (das Suchergebnis wird von SetTitleMatchMode beeinflusst). Wenn dieser und die nächsten 3 Parameter leer gelassen werden, wird das LastFoundWindow (zuletzt gefundene Fenster) verwendet. Wenn hier der Buchstabe A angegeben wird und die nächsten 3 Parameter leer gelassen werden, wird das momentan aktive Fenster verwendet. Für eine Fensterklasse wird ahk_class ExakterKlassenName (wie vom "Window Spy" angezeigt) angegeben, für eine Prozess ID (PID) ahk_pid %VarMitInhaltPID%, für eine Fenstergruppe ahk_group GroupName und für die eindeutige ID eines Fensters ahk_id %VarMitInhaltID%. Die Suche kann durch Angabe mehrerer Kriterien eingeschränkt werden. Beispiel: My File.txt ahk_class Notepad

WinText

Wenn angegeben, muss dieser Parameter den Inhalt oder einen Teil des Inhalts eines einzelnen Textelementes des Zielfensters enthalten, wie er z.B. vom mitgelieferten "Window Spy" angezeigt wird. Verborgene Textelemente werden nur gefunden, wenn DetectHiddenText vorher auf ON gesetzt wurde.

WhichButton

Die zu sendende Maustaste: LEFT (links), RIGHT (rechts), MIDDLE (mittlere) oder nur einer der Anfangsbuchstaben L, R, M. Wenn der Parameter leer gelassen wird, wird LEFT verwendet.

Das Mausrad wird mit WheelUp (WU, aufwärts) und WheelDown (WD, abwärts) unter Windows NT/2000/XP oder neuer ebenfalls unterstützt. In diesem Fall bestimmt ClickCount die Anzahl der Rasten.

X1 (XButton1, die vierte Maustaste) und X2 (XButton2, die fünfte Maustaste) werden unter Windows 2000/XP oder neuer ebenfalls unterstützt.

ClickCount

Die Anzahl der zu sendenden Klickereignisse, die auch als Ausdruck angegeben werden kann. Wird dieser Parameter leer gelassen, wird 1 Klick gesendet.

Options

Eine Folge von keiner oder mehr der folgenden Optionen (Beispiel: d x50 y25):

NA [v1.0.45+]: Vermeidet die Aktivierung des Zielfensters, wodurch auch die Zuverlässigkeit in Fällen verbessert werden kann, in denen der Benutzer während der Ausführung der Anweisung die Maus selbst bewegt. Diese Option arbeitet aber möglicherweise nicht für alle Arten von Fenstern und Controls zuverlässig.

D: Drückt die Maustaste, ohne sie wieder loszulassen (d.h., sendet das Ereignis "Maustaste gedrückt"). Werden sowohl D als auch U nicht angegeben, wird ein vollständiger Klick (drücken und loslassen) gesendet.

U: Lässt die Maustaste wieder los (d.h.,  sendet das Ereignis "Maustaste losgelassen"). Diese Option sollte nicht angegeben werden, wenn bereits die Option D verwendet wurde, und umgekehrt.

Pos: Durch Angabe des Wortes Pos irgendwo innerhalb von Options wird der Modus 1 (Position) erzwungen wie oben bei Control-or-Pos bereits beschrieben.

Xn: Als n wird die X-Position relativ zur linken oberen Ecke des Controls angegeben, auf die geklickt werden soll. Fehlt die Angabe, wird der Klick in der horizontalen Mitte des Controls ausgeführt.

Yn: Als n wird die Y-Position relativ zur linken oberen Ecke des Controls angegeben, auf die geklickt werden soll. Fehlt die Angabe, wird der Klick in der vertikalen Mitte des Controls ausgeführt.

Für die Optionen X und Y müssen dezimale Werte (keine hexadezimalen) angegeben werden.

ExcludeTitle

Fenster, deren Titel diesen Wert enthalten, werden bei der Suche übergangen.

ExcludeText

Fenster, deren Text diesen Wert enthält, werden bei der Suche übergangen.

ErrorLevel

ErrorLevel wird im Falle eines Problems auf 1 gesetzt, sonst auf 0.

Zuverlässigkeit

Zur Verbesserung der Zuverlässigkeit - insbesondere wenn der Benutzer während der Ausführung der Anweisung die Maus selbst bewegt - können eine oder beide der folgenden Maßnahmen getroffen werden:

1) Aufruf von SetControlDelay -1 vor ControlClick. Damit wird vermieden, dass die Maustaste während des Klicks gehalten wird, womit wiederum die Möglichkeit der Beeinträchtigung durch die Mausbewegung des Benutzers gemindert wird.

2) Angabe der Option NA irgendwo im sechsten Parameter (Options). Damit wird vermieden, dass das Zielfenster aktiviert wird und sich die Ergebnisse der Eingabeverarbeitungen des Skripts und des Zielfensters vermischen (was als Nebeneffekt den störenden Einfluss von echten Mausbewegungen verhindert, normalerweise aber nur dann, wenn das Zielfenster nicht aktiv ist). 

Diese Methoden funktionieren aber möglicherweise nicht für alle Arten von Fenstern oder Controls.

Anmerkungen

Nicht alle Anwendungen lassen für das Mausrad in ClickCount einen Wert größer als 1 zu. Für diese Anwendungen verwendet man eine Schleife, um das Mausrad um mehr als eine Raste zu bewegen, wie es im folgenden Beispiel für 5 Rasten gezeigt wird:

Loop, 5
ControlClick, Control, WinTitle, WinText, WheelUp

Bei Fenstertiteln und -texten muss die Groß/Kleinschreibung beachtet werden. Verborgene Fenster werden nur gefunden, wenn DetectHiddenWindows vorher auf ON gesetzt wurde.

Siehe auch

SetControlDelay, Control, ControlGet, ControlGetText, ControlMove, ControlGetPos, ControlFocus, ControlSetText, ControlSend, Click

Beispiele

ControlClick, OK, Some Window Title ; Klickt auf den OK Button
ControlClick, x55 y77, WinTitle ; Klickt auf die vorgegebenen Koordinaten. Beachte, dass zwischen X und Y kein Komma steht.