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
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.
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.
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).
Wenn das vorherige Untermenü selbst ein Menü enthält, ist dies der Name oder die Position des darin befindlichen Menüpunkts.
[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.
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.
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
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