Guardar AppleScript elimina caracteres

2

He escrito un Applescript para iniciar y posicionar dos instancias de una Aplicación. El script se ejecuta perfectamente en el editor usando este código:

tell application "App" to activate
tell application "System Events" to tell application process "App"
    set position of window 1 to {8, 22}
end tell
tell application "App 2" to activate
tell application "System Events" to tell application process "App 2"
    set position of window 1 to {914, 22}
end tell

No es una aplicación de secuencias de comandos, por lo que estoy usando eventos del sistema (también cambié el nombre CFBundleName de la segunda aplicación, de modo que incluya el 2 para diferenciar los procesos). Todo esto funciona bien en el editor cuando lo ejecuto. Sin embargo, cuando guardo el script como una aplicación, elimina constantemente el "2" de la "Aplicación 2" cada vez que guardo la aplicación, aunque se compile bien. ¿Alguien tiene alguna idea de por qué sucede esto? Soy bastante nuevo en Applescript.

    
pregunta Robert Alexander 29.06.2014 - 19:56

2 respuestas

1

Puedes evitar el problema en la compilación si eliges dinámicamente las aplicaciones en los eventos del sistema.

tell application "System Events"
    set App1 to (first process whose name is "App")
    tell App1
        set frontmost to true
        set position of window 1 to {8, 22}
    end tell
end tell

Luego haz lo mismo para App2.

    
respondido por el jweaks 09.07.2014 - 06:54
0

El problema principal es que Apple Script Editor no conoce ninguno de los nombres "App" ni "App 2", por lo que si ejecuta el script, le pedirá que seleccione dónde se almacena la aplicación y luego reemplaza "App" por Nombre actual de la aplicación. Esto también ocurre con "App 2".

Entonces, si selecciona dos veces la misma Aplicación (que es lo que está tratando de hacer, de acuerdo con sus menciones), ambas veces eliminará los Nombres "Aplicación" y "Aplicación 2" con el mismo Nombre que el Nombre Real. Aplicación.

O si usa la aplicación como una abreviatura del nombre real de la aplicación, conoce la aplicación en la primera declaración pero no en la segunda, por lo que solicitará solo una vez y simplemente reemplazará la "aplicación 2".

Para hacer lo que quieras, te recomiendo que cambies tu Script a algo como esto y lo pruebes de esa manera (no probado):

tell application "<Name of Application>" to activate --open first Window
tell application "<Name of Application>" to activate --open second Window

tell application "System Events" to tell application process "<Name of Application>"
    set position of window 1 to {8, 22}
    set position of window 2 to {914, 22}
end tell

si esto no funciona, quizás puedas adoptar esta secuencia de comandos que mueve dos ventanas de Finder abiertas lado a lado.

property monitor_width : 980
property monitor_height : 768

set the startup_disk to (path to startup disk)

tell application "Finder" activate
    set visible of (every process whose visible is true and frontmost is false) to false
    -- BOTTOM WINDOW
    set this_window to make new Finder window
    set the target of this_window to the startup_disk
    set the bounds of this_window to {0, (monitor_height * 0.55) div 1, monitor_width, monitor_height}
    set the current view of this_window to column view
    -- TOP WINDOW
    set this_window to make new Finder window
    set the target of this_window to the startup_disk
    set the bounds of this_window to {0, (monitor_height * 0.06) div 1, monitor_width, (monitor_height * 0.53) div 1}
    set the current view of this_window to column view
end tell

Fuente: enlace

    
respondido por el konqui 09.07.2014 - 07:31

Lea otras preguntas en las etiquetas