Comment puis-je focaliser une fenêtre spécifique avec applescript sans faire d'activation et amener d'autres fenêtres au premier plan?


18

Je suis à la recherche d'une méthode avec AppleScript pour sélectionner / concentrer une fenêtre spécifique d'une application sans réellement faire une "activation" qui amène toutes les fenêtres au premier plan.

Voici ce que j'ai jusqu'à présent:

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    

Le problème est le "activer" dans la dernière ligne. Cela met tout en avant, mais je veux juste une seule fenêtre.

Réponses:


15

Vous avez raison de dire que la activatecommande ouvre toutes les fenêtres. La opencommande shell ne soulève cependant qu'une seule fenêtre:

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, c'est génial. Il se rapproche, malheureusement, si Chrome est déjà concentré, la fenêtre "quel que soit" ne clignote que vers l'avant et la fenêtre actuellement focalisée l'emporte. Si j'utilise la technique de «cliquer sur l'élément de menu» avec l'ouverture -a, cela semble fonctionner, mais cela nécessite une accessibilité. Des idées pour contourner ça?
Aaron Jensen

1
L'ajout d'un "retard de 0,05" entre vos deux lignes semble fonctionner parfaitement. Merci encore!
Aaron Jensen

Je n'ai pas pu le reproduire, mais vous pouvez aussi essayer tell application "System Events" to tell process "Google Chrome" to perform action "AXRaise" of window 1.
Lri

3
Je reçois:execution error: The variable title is not defined. (-2753)
redolent

3
Re: erreur d'exécution. Remplacez titlepar name.
vaughan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.