WinMenuSelectItem

Wählt einen Menüpunkt in der Menüleiste eines bestimmten Fensters aus.

WinMenuSelectItem, FensterTitel, FensterText, Menü , Untermenü1, Untermenü2, Untermenü3, Untermenü4, Untermenü5, Untermenü6, AusnahmeTitel, AusnahmeText

Parameter

FensterTitel, FensterText, AusnahmeTitel, AusnahmeText

Wenn jeder dieser Parameter leer ist oder weggelassen wird, wird das Zuletzt Gefundene Fenster verwendet. Andernfalls geben Sie für FensterTitel einen Fenstertitel oder andere Kriterien zur Identifizierung des Zielfensters und/oder für FensterText eine Teilzeichenkette aus einem Textelement des Zielfensters an (Textelemente können mit dem internen Tool "Window Spy" in Erfahrung gebracht werden).

AusnahmeTitel und AusnahmeText können verwendet werden, um ein oder mehrere Fenster anhand ihres Titels oder Textes auszuschließen. Ihre Angabe ähnelt der von FensterTitel und FensterText, außer dass AusnahmeTitel keine anderen Kriterien als den Fenstertitel erkennt.

Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Standardmäßig werden versteckte Fenster nicht erkannt und versteckte Textelemente erkannt, was mit DetectHiddenWindows und DetectHiddenText geändert werden kann. Standardmäßig muss ein Fenstertitel mit dem angegebenen FensterTitel oder AusnahmeTitel beginnen, um eine Übereinstimmung zu sein, was mit SetTitleMatchMode geändert werden kann.

Menü

Der Name (oder ein Präfix des Namens) des Top-Level-Menüpunkts, z.B. Datei, Bearbeiten, Ansicht. Es kann auch die Position des gewünschten Menüpunkts angegeben werden, z.B. ist 1& das erste Menü, 2& das zweite Menü usw.

Die Suche erfolgt nicht Groß-/Kleinschreibung-sensitiv, gemäß den aktuellen Sprach- und Regionseinstellungen des Benutzers, und endet beim ersten gefundenen Menüpunkt. Das Und-Zeichen (&), welches verwendet wird, um den unterstrichenen Buchstaben in einem Menüpunkt zu kennzeichnen, kann normalerweise weggelassen werden (d.h. &Datei ist dasselbe wie Datei).

Bekannte Einschränkung: Wenn der Parameter ein Und-Zeichen enthält, muss er genau mit dem Namen des Menüpunkts übereinstimmen, einschließlich aller nicht direkt geschriebenen Und-Zeichen (die versteckt sind oder als Unterstrich angezeigt werden). Wenn der Parameter kein Und-Zeichen enthält, werden alle Und-Zeichen (auch die direkt geschriebenen) ignoriert. Zum Beispiel findet a && b oder a b einen Menüpunkt, der als "a & b" dargestellt wird.

[v1.1.28+]: Geben Sie 0& an, um das Systemmenü des Fensters zu verwenden.

Untermenü1

Name oder Position des Menüpunkts, der ausgewählt werden soll. Dies kann weggelassen werden, wenn der Top-Level-Menüpunkt kein Menü enthält (selten).

Untermenü2, Untermenü3, Untermenü4, Untermenü5, Untermenü6

Wenn das vorherige Untermenü selbst ein Menü enthält, ist dies der Name oder die Position des darin befindlichen Menüpunkts.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird bei Misserfolg auf 1 und bei Erfolg auf 0 gesetzt.

Bemerkungen

Dieser Befehl funktioniert auch, wenn das Zielfenster nicht aktiv ist. Es ist jedoch möglich, dass sich einige Fenster in einem nicht-minimierten Zustand befinden müssen.

Dieser Befehl funktioniert nicht, wenn Programme nicht-standardisierte Menüleisten verwenden. Zum Beispiel verwenden Microsoft Outlook und Outlook Express versteckte Symbolleisten für ihre Menüleisten. In solchen Fällen können Sie ControlSend oder PostMessage verwenden, da sie in der Lage sind, mit einigen dieser nicht-standardisierten Menüleisten zu interagieren.

Für die Menü-Parameter können auch Positionsnummern angegeben werden. Diese Methode existiert, um Menüs zu unterstützen, die keine Texte enthalten (z.B. Bilder statt Texte). Position 1& ist der erste Menüpunkt (z.B. das Datei-Menü), Position 2& ist der zweite Menüpunkt (z.B. das Bearbeiten-Menü), und so weiter. Menütrennlinien zählen bei der Positionsbestimmung ebenfalls als Menüpunkte.

Systemmenü [v1.1.28+]

Für Menü kann 0& angegeben werden, um einen Menüpunkt im Systemmenü des Fensters auszuwählen. Dieses Menü kann normalerweise durch Drücken von Alt+Leer oder durch Klicken auf das Symbol in der Titelleiste des Fensters angezeigt werden. Zum Beispiel:

; Einen Befehl in cmd.exe einfügen, ohne das Fenster zu aktivieren.
Clipboard := "echo Hallo, Welt!`r"
WinMenuSelectItem ahk_exe cmd.exe,, 0&, Bearbeiten, Einfügen

Achtung: Verwenden Sie diese Methode nur für Fenster, die benutzerdefinierte Menüpunkte in ihrem Systemmenü haben.

Wenn das Fenster noch kein benutzerdefiniertes Systemmenü hat, wird eine Kopie des Standard-Systemmenüs erstellt und als Nebeneffekt dem Zielfenster zugeordnet. Diese Kopie wird vom System zerstört, wenn das Skript beendet wird, wodurch andere Skripte nicht mehr darauf zugreifen können. Vermeiden Sie daher die Verwendung von 0& für die Standardmenüpunkte, die alle Fenster haben. Posten Sie stattdessen direkt die WM_SYSCOMMAND-Meldung. Zum Beispiel:

; Wie "WinMinimize A", spielt aber auch den Systemsound fürs Minimieren ab.
WM_SYSCOMMAND := 0x0112
SC_MINIMIZE := 0xF020
PostMessage WM_SYSCOMMAND, SC_MINIMIZE, 0,, A

ControlSend, PostMessage

Beispiele

Wählt Datei -> Öffnen in Notepad aus. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version von Notepad erfordert.

WinMenuSelectItem, Unbenannt - Editor,, Datei, Öffnen

Wie oben, außer dass die Auswahl über die Position erfolgt, nicht über den Namen. In Windows 10 muss 2& mit 3& ersetzt werden, da es den neuen Menüpunkt "Neues Fenster" gibt. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version von Notepad erfordert.

WinMenuSelectItem, Unbenannt - Editor,, 1&, 2&

Wählt View -> Lines most recently executed im Hauptfenster aus.

#Persistent
WinShow, ahk_class AutoHotkey
WinMenuSelectItem, ahk_class AutoHotkey,, View, Lines most recently executed