Ruft einen Menüpunkt in der Menüleiste eines bestimmten Fensters auf.
WinMenuSelectItem, FensterTitel, FensterText, Menü , Untermenü1, Untermenü2, Untermenü3, Untermenü4, Untermenü5, Untermenü6, IgnoriereTitel, IgnoriereText
Der Titel oder andere Möglichkeiten zum Identifizieren des Zielfensters. Weitere Informationen finden Sie unter FensterTitel-Parameter.
Eine Zeichenkette, die in einem der Textelemente des Zielfensters enthalten ist (eventuell vorhandene Textelemente können mit dem internen Tool Window Spy aufgedeckt werden). Versteckte Textelemente werden nur erkannt, wenn DetectHiddenText eingeschaltet ist.
Der Name (oder ein Präfix des Namens) des auf oberster Ebene befindlichen Menüpunkts, z. B. Datei, Bearbeiten, Ansicht. Es kann auch die Position des gewünschten Menüpunkts sein - 1&
wäre das erste Menü, 2&
das zweite Menü, und so weiter.
Die Suche erfolgt nicht-Groß-/Kleinschreibung-sensitiv, abhängig von den aktuellen Sprach- und Regionseinstellungen des Benutzers, und stoppt beim ersten gefundenen Menüpunkt. Das Und-Zeichen (&), welches verwendet wird, um den unterstrichenen Buchstaben in einem Menüpunkt zu kennzeichnen, kann meistens weggelassen werden (das heißt, dass &Datei das gleiche ist wie Datei).
Bekannte Einschränkung: Wenn der Parameter ein Und-Zeichen enthält, muss er genau mit dem Menüpunktnamen übereinstimmen, inklusive aller nicht direkt geschriebenen Und-Zeichen (die versteckt oder als Unterstrich angezeigt werden). Wenn der Parameter kein Und-Zeichen enthält, werden alle Und-Zeichen (auch die direkt geschriebenen) ignoriert. Ein Menüpunkt, der zum Beispiel als "a & b" dargestellt wird, stimmt mit den Parameterwerten a && b
oder a b
überein.
[v1.1.28+]: Geben Sie 0&
an, um das Systemmenü des Fensters zu nutzen.
Name oder Position des Menüpunkts, der ausgewählt werden soll (siehe oben).
Dieser Parameter kann weggelassen werden, wenn der auf oberster Ebene befindliche Menüpunkt kein Menü enthält (selten).
Enthält Untermenü1 selbst ein Menü, könnte man hier den Namen oder Position von einem seiner Menüpunkte angeben.
Wie oben.
Alle Fenster, die diesen Wert in ihren Titeln enthalten, werden ignoriert.
Alle Fenster, die diesen Wert in ihren Textelementen enthalten, werden ignoriert.
[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. Allerdings ist es möglich, dass einige Fenster in einem nicht-minimierten Zustand sein müssen.
Dieser Befehl wird nicht funktionieren, wenn Programme nicht-standardisierte Menüleisten verwenden. Microsoft Outlook und Outlook Express verwenden beispielsweise versteckte Werkzeugleisten für ihre Menüleisten. In solchen Fällen sind ControlSend oder PostMessage gut geeignet, weil sie in der Lage sein sollten, mit einigen dieser nicht-standardisierten Menüleisten interagieren zu können.
In den Menü-Parametern können auch Positionsnummern angegeben werden. Diese Methode existiert, um Menüs zu unterstützen, die keinen Text haben (weil sie beispielsweise Bilder statt Text enthalten). 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 auch als Menüpunkte beim Bestimmen der Position.
Fenstertitel und -texte sind Groß-/Kleinschreibung-sensitiv. Versteckte Fenster werden nur erkannt, wenn DetectHiddenWindows eingeschaltet ist.
Menü kann 0&
sein, um einen Menüpunkt im Systemmenü des Fensters auszuwählen. Dieses Menü kann in der Regel aufgerufen werden, wenn man Alt+Leer drückt oder auf das Symbol in der Titelleiste des Fensters klickt. Zum Beispiel:
; Fügen Sie einen Befehl in cmd.exe ein, ohne das Fenster zu aktivieren. Clipboard := "echo Hallo, Welt!`r" WinMenuSelectItem ahk_exe cmd.exe,, 0&, Bearbeiten, Einfügen
Vorsicht: Wenden Sie diese Methode nur bei Fenstern an, 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 dem Zielfenster als Nebeneffekt zugeordnet. Diese Kopie wird vom System zerstört, wenn das Skript beendet wird, und führt dazu, dass andere Skripte nicht mehr darauf zugreifen können. Vermeiden Sie daher, 0& in Verbindung mit Menüpunkten zu nutzen, die alle Fenster standardmäßig im Systemmenü haben. Versuchen Sie stattdessen, die WM_SYSCOMMAND-Meldung direkt via PostMessage zu senden. Zum Beispiel:
; Hat denselben Effekt wie "WinMinimize A", plus der System-Sound beim Minimieren eines Fensters. WM_SYSCOMMAND := 0x0112 SC_MINIMIZE := 0xF020 PostMessage WM_SYSCOMMAND, SC_MINIMIZE, 0,, A
Wählt Datei -> Öffnen
im Texteditor aus. Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version vom Texteditor erfordert.
WinMenuSelectItem, Unbenannt - Editor,, Datei, Öffnen
Wie oben, außer dass die Auswahl über die Position anstelle des Namens erfolgt. In Windows 10 muss 2& mit 3& ersetzt werden, aufgrund des neuen Menüpunkts "Neues Fenster". Dieses Beispiel kann unter Windows 11 oder höher fehlschlagen, da es die klassische Version vom Texteditor 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