Error de AppleScript

1

Editar: Bueno, ahora parece que simplemente funciona. No tengo idea de lo que está pasando lol.

¿Alguien puede decirme qué está pasando aquí?

tell application "Terminal"
    do script "killall Finder"
    tell application "Finder"
        repeat while running
        end repeat
    end tell

    close window 1
    quit
end tell

tell application "Finder"
    repeat while not running
    end repeat

    activate
end tell

Finder recibió un error: la aplicación no se está ejecutando "número -600

es lo que obtengo Si comento

repeat while not running
end repeat

No obtengo el error, pero si lo dejo y comento

activate

En cambio, tampoco recibo un error. Así que aparentemente interactúan entre sí para causar un error de alguna manera. Si agrego un retraso, puedo evitar el problema, pero no quiero saber por qué lo que tengo causa un error. Tengo OS X 10.9.4.

Masón
fuente
¿Qué es lo que estás tratando de lograr con este script?
Alistair McMillan
Bueno, supongo que estoy tratando de reiniciar Finder y luego volver a enfocarlo. Hice esto para mostrar el error que recibo de forma simple.
Mason
Me encantaría ayudarlo con esto, desafortunadamente el código funciona bien en mis Mac. :)
Alistair McMillan
Mirando el registro de eventos, veo que de alguna manera el comando de activación se llama una y otra vez como si estuviera en el bucle.
Mason el
qué demonios, cuando coloco 'activar' dentro del bucle, se llama una vez, pero cuando está fuera del bucle, se llama una y otra vez.
Mason el

Respuestas:

1

Estás matando a Finder desde la Terminal, luego le estás diciendo a Finder que 'repita mientras corres' ... simplemente lo mataste, no está corriendo. Tampoco estás haciendo nada en la repetición, solo le estás diciendo al guión que haga girar sus ruedas a toda velocidad. Realmente no tengo idea de lo que estás tratando de lograr con esto.

Si solo desea reiniciar el Finder [Optar / hacer clic derecho en el dock es una manera fácil], intente ...

tell application "Finder" to quit
delay 3
set test to 0
repeat while test = 0
    log test
    tell application "System Events" to set test to count (every process whose name is "Finder")
    delay 2
    --//we do this even if active because it doesn't naturally come to front
    try
        tell application "Finder" to activate
    end try
    if (test > 0) then exit repeat
end repeat
Tetsujin
fuente
jaja, no sabía que podías salir de Finder a través de AppleScript. Bien, lo que la primera repetición mientras el bucle estaba haciendo era retrasar el programa. Sin eso, el script va más rápido de lo que la computadora puede ejecutar lo que se le dice que haga. El bucle asegura que killall se haya ejecutado antes de cerrar la ventana. Se suponía que el segundo bucle aseguraría que Finder haya terminado de reiniciarse para que el comando de activación funcione.
Mason
error: la aplicación no se está ejecutando ". El número -600 dice más o menos lo que dije, no puede verificar que se esté ejecutando, porque el proceso al que está solicitando la verificación ... no se está ejecutando. Necesita que System Events vigilar eso.
Tetsujin
En el programa original esto ocurrió, la repetición mientras se ejecuta el bucle lo hizo funcionar. En este no hace nada y no es necesario.
Mason