7 votos

Applescript - esperar a la ventana / de diálogo que aparezca / desaparezca

Yo soy de secuencias de comandos de iTunes y chocó con dos problemas cuando estoy en una etapa de mi script necesario para comprobar si windows/cuadros de diálogo se muestran o no.

  1. De acuerdo a Esperar hasta que una ventana existe en Applescript? este debe ser un código válido

    repeat until window "Print" of process "Evernote" exists

pero cuando voy a compilar me sale este mensaje de error "se Espera al final de la línea, pero encontró """ (" hace referencia a la " antes de E en Evernote). Por qué? Esa pregunta es de 2,5 años de edad, ha cambiado algo desde entonces? Estoy ejecutando OS X 10.11.

  1. Puedo utilizar este código para verificar si la información de la canción-se abra la ventana de iTunes

    repeat until (not (exists window "Song Info"))

pero cuando trato de buscar en diálogo Abierto con una línea similar

repeat until (exists window "Open")

la ventana no es detectado. He utilizado la Accesibilidad Inspector para obtener algunas propiedades de la Canción en la ventana de Información y el diálogo Abierto y la única diferencia que he notado es el nombre, así como el tipo. La Información de la canción es una "ventana", mientras que la apertura es un "diálogo". Por lo tanto, también traté de estas dos variaciones sobre el código anterior:

repeat until (exists dialog "Open")
repeat until (exists window dialog "Open")
repeat until (exists dialog window "Open")

pero ninguno de ellos compilar.

¿Cómo puedo detectar el cuadro de diálogo Abrir?

8voto

user3439894 Puntos 5883

La razón por la que usted está consiguiendo "Error de Sintaxis Espera que al final de la línea, pero encontró """." cuando se utiliza repeat until window "Print" of process "Evernote" exists es debido a que utiliza fuera de contexto de la aplicación de llamada. Se podría decir que significa, en el contexto de la aplicación de llamada, no entiende el comando y el Editor AppleScript no es que bien escrito para expresar lo que el error que realmente significa.

De todos modos, el ejemplo de código siguiente cuando se ejecuta en ScriptEditor, por sí mismo, va a esperar para mostrar "Su espera ha terminado!" cuadro de diálogo hasta que iTunes se abra y se presiona O o haga clic en Archivo > Añadir a la Biblioteca... en el iTunes menú.

tell current application
    tell application "System Events"
        repeat until (exists window "Add To Library" of application process "iTunes")
            delay 1
        end repeat
    end tell
    activate
    display dialog "Your wait is over!"
end tell
  • Nota el uso de la delay comando dentro de la repeat de bucle. Obviamente, el valor puede ser algo más, incluso fracciones de un segundo, sin embargo, usted debe siempre usar un retraso para evitar los Eventos del Sistema desde innecesariamente desencadenar el bucle de cientos de tiempo de un segundo hasta que la condición se cumple.

Como regla general, he encontrado que en el momento que yo estoy usando el código que ha ... process ... o ... application process ... es una llamada se hizo a o por Eventos del Sistema y, como tal, en este caso de uso, el repeat bucle tiene que estar dentro de una tell instrucción o bloque de Eventos del Sistema con el fin de no obtener el error mencionado en su OP.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X