Wie kann ich ein bestimmtes Fenster mit AppleScript fokussieren, ohne es zu aktivieren und andere Fenster nach vorne zu bringen?


18

Ich suche nach einer Methode mit AppleScript, um ein bestimmtes Fenster einer Anwendung auszuwählen / zu fokussieren, ohne tatsächlich ein "Aktivieren" durchzuführen, das alle Fenster nach vorne bringt .

Folgendes habe ich bisher:

tell application "Google Chrome"
    set windowTitle to title of first window whose title contains "whatever"
end tell
tell application "System Events" to tell process "Google Chrome"
    click menu item windowTitle of menu 1 of menu bar item "Window" of menu bar 1
end tell
tell application "Google Chrome" to activate    

Das Problem ist das "Aktivieren" in der letzten Zeile. Das bringt alles nach vorne, aber ich will nur das eine Fenster.

Antworten:


15

Sie haben Recht, dass der activateBefehl alle Fenster öffnet. Der openShell-Befehl öffnet jedoch nur ein Fenster:

tell application "Google Chrome" to set index of window 1 where title contains "whatever" to 1
delay 0.05
do shell script "open -a Google\\ Chrome"

Ah, das ist großartig. Es kommt leider nahe, wenn Chrome bereits fokussiert ist, blinkt das "was auch immer" -Fenster nur nach vorne und das aktuell fokussierte Fenster gewinnt. Wenn ich die "click menu item" -Technik zusammen mit dem open -a verwende, scheint es zu funktionieren, aber das erfordert Zugänglichkeit. Irgendwelche Ideen, um das zu umgehen?
Aaron Jensen

1
Das Hinzufügen einer "Verzögerung 0.05" zwischen Ihren beiden Zeilen scheint perfekt zu funktionieren. Danke noch einmal!
Aaron Jensen

Ich konnte es nicht reproduzieren, aber du könntest es auch versuchen tell application "System Events" to tell process "Google Chrome" to perform action "AXRaise" of window 1.
Lri

3
Ich bekomme:execution error: The variable title is not defined. (-2753)
duftende

3
Betreff: Ausführungsfehler. Wechseln Sie titlezu name.
Vaughan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.