Tengo el siguiente código AppleScript que abre un archivo específico en TextEdit en una ventana con límites predeterminados:
set targetFilepath to "/Users/Me/Desktop/My Fruit Log.txt"
tell application "TextEdit"
activate
open targetFilepath
set bounds of front window to {279, 111, 1180, 719}
end tell
El problema con este código es que, si tengo otros archivos de TextEdit abiertos, el código también traerá los otros documentos al frente. Sin embargo, me gustaría que solo este archivo de texto específico se traiga al frente.
El código no traerá una ventana de TextEdit minimizada al frente, pero traerá todas las ventanas de TextEdit ocultas, no minimizadas, al frente.
Cuando elimino la activate
línea del código:
tell application "TextEdit"
open targetFilepath
set bounds of front window to {279, 111, 1180, 719}
end tell
el archivo se abre, pero su ventana no se pone en primer plano.
OS X El Capitán, versión 10.11.6.
Aquí hay una representación visual de lo que he descrito anteriormente. No tenía ninguna ventana minimizada en mi computadora cuando se tomaron estas capturas de pantalla.
Así es como se ve mi pantalla antes de que se active el AppleScript :
Así es como quiero que se vea mi pantalla después de que se active el AppleScript :
Así es como se ve mi pantalla actualmente después de que se activa AppleScript :
En interés de la divulgación completa, mi código también mueve la ubicación del cursor de TextEdit después de abrir el archivo. No sé si esto afectaría una posible solución, pero aquí está el código adicional que sigue al pasaje anterior ( x
es un número entero que se asigna de antemano):
tell application "TextEdit" to activate
tell application "System Events" to tell process "TextEdit"
repeat x times
key code 125
end repeat
end tell
end tell
Creo que el problema que tienes es que has entendido mal lo que realmente está pasando. Déjame intentar explicar...
La primera pregunta a responder es ¿por qué no se veían las ventanas que faltaban en su primera captura de pantalla? Obviamente, el archivo My Fruit Log.txt no estaba visible porque aún no estaba abierto (es decir, su secuencia de comandos aún no se había ejecutado). Pero ¿qué pasa con las otras ventanas? Solo hay tres posibilidades:
En su escenario, es casi seguro que se aplica la Opción 2. Entonces, si bien no es lo que desea escuchar, su secuencia de comandos en realidad funciona de la manera en que se supone que debe hacerlo en macOS. La única forma que se me ocurre en este momento para lograr lo que desea de manera práctica es asegurarse de que su secuencia de comandos minimice todas las demás ventanas, excepto la que acaba de abrir. Por ejemplo, podría lograr esto con el siguiente código:
set targetFilepath to "/Users/Me/Desktop/My Fruit Log.txt"
tell application "TextEdit"
activate
open targetFilepath
tell (windows whose id is not (get id of front window) and visible is true)
set miniaturized to true
end tell
set bounds of front window to {279, 111, 1180, 719}
end tell
Como puede ver, acabo de agregar dos líneas de código. Creo que se explican por sí mismos: simplemente le dicen a TextEdit que minimice cualquier ventana que cumpla con estas dos condiciones (1. no es la ventana frontal y 2. es visible).
Esperemos que esto funcione para usted, pero si no, tal vez a alguien más se le ocurra una solución mejor.
¿Qué tal esto?
tell application "TextEdit"
set fWin to front window -- Since you're already using 'front window'
repeat with w in every window
set visible of w to false
end repeat
-- set visible of window id 189 to true (frontmost on my mac now)
set visible of fWin to true
activate
end tell
Estoy seguro de que hay otros métodos para identificar las ventanas. También podría hacer algo como esto... donde se usa una lista de ventanas desde la segunda hasta la última.
tell application "TextEdit"
-- Assuming that front window should be visible…
set winList to (windows 2 thru -1)
repeat with w in winList
set visible of w to false
end repeat
activate
end tell
El término clave aquí es 'visible'.
open targetFilepath
línea ir antes o después de su código? Puse esta línea antes de tu código. No noto ninguna diferencia con tu primera solución; las ventanas ocultas de TextEdit aún se vuelven visibles. Su segunda solución cierra completamente las ventanas ocultas, en lugar de simplemente ocultarlas.visible (boolean) : Whether the window is currently visible.
esfera de rubik
activate
, ni siquiera la ventana del archivo que se abre.Monomeeth
esfera de rubik
Monomeeth
esfera de rubik