tl; dr
Usando set index of window <n> to 1
no es totalmente eficaz en la que no se active realmente la ventana - lo hace visible, sin embargo.
Soluciones provisionales (Ejemplos Supongamos que desea activar la ventana 2):
Yar's answer ofrece una solución pragmática, aunque no está del todo claro por qué funciona. Sin embargo, tiene la ventaja de no que requiere que la aplicación de llamada sea authorized for assistive access, a diferencia de las siguientes soluciones.
user495470's answer alude a una solución robusta y genérico que también trabaja con aplicaciones no AppleScriptable:
tell application "System Events" to tell process "Google Chrome"
perform action "AXRaise" of window 2
set frontmost to true
end tell
Alternativamente, utilizar el controlador AppleScript se define a continuación como sigue:
tell application "Google Chrome" to my activateWin(it, window 2)
Mientras adayzdone's answerdebe trabajo y casi hace, hay una trampa - que puede o no puede ser un problema (como se observa en Chrome 21.0.1180.89 en Mountain Lion) [actualización sigue siendo válida a partir del cromo 47.0.2526.106 en OSX 10.11.2]:
Mientras que la solución se mostrar la ventana deseada como la ventana delantera, Chrome no tratar como la ventana delantera si una ventana diferente era previamente activo. Puede decir mediante los botones de barra de título de cierre/min/zoom inactivos, por qué título de ventana está la marca de verificación, y por el hecho de que los atajos de teclado como Cmd-L
no se aplicarán a la ventana deseada.
Si su próxima acción será haga clic en en algún lugar de la ventana de todos modos, esto puede no ser un problema, ya que un clic activará completamente la ventana deseada.
De lo contrario, se puede emplear un razonablemente robusta solución GUI-scripting (agradecimiento adaptado de una solución genérica here):
actualización: Lamentablemente, el problema de la realidad no activar la ventana cuyo índice se establece a 1 parece afectar TODAS las aplicaciones (experimentadas en OS X 10.8.3). Aquí hay una función genérica que activa correctamente una ventana dada en una aplicación determinada de AppleScriptable mediante el uso de scripts GUI.
# Activates the specified window (w) of the specified AppleScriptable
# application (a).
# Note that both parameters must be *objects*.
# Example: Activate the window that is currently the 2nd window in Chrome:
# tell application "Google Chrome"
# my activateWin(it, window 2)
# end tell
on activateWin(a, w)
tell application "System Events"
click menu item (name of w) of menu 1 of menu bar item -2 ¬
of menu bar 1 of process (name of a)
end tell
activate a
end activateWin
En una nota lateral, lo que el PO intentó - por ejemplo, activate window 1
- parece no estar funcionando en todas las aplicaciones en OS X 10.8.3, así - mientras que la aplicación subyacente se activa, la especificación de la ventana. es ignorado
Aquí está el original, más código didáctica:
tell application "Google Chrome"
# Each window is represented by the title of its active tab
# in the "Window" menu.
# We use GUI scripting to select the matching "Window" menu item
# and thereby properly activate the window of interest.
# NOTE: Should there be another window with the exact same title,
# the wrong window could be activated.
set winOfInterest to window 2 # example
set winTitle to name of winOfInterest
tell application "System Events"
# Note that we must target the *process* here.
tell process "Google Chrome"
# The app's menu bar.
tell menu bar 1
# To avoid localization issues,
# we target the "Window" menu by position - the next-to-last
# rather than by name.
click menu item winTitle of menu 1 of menu bar item -2
end tell
end tell
end tell
# Finally, activate the app.
activate
end tell
wow ... esto funciona a la perfección. Pensé que era simplemente imposible :) – m41n1