¿Es posible que el botón "Salir" de una aplicación AppleScript anule (es decir, cancele) un cuadro de diálogo abierto?

Para presenciar el tema al que me refiero, sigue estos pasos:

  1. Cree un AppleScript que simplemente contenga un display dialogdiálogo.

  2. Guarde este script como un archivo .app.

  3. Ejecute el archivo .app.

Si hace clic con el botón derecho en el ícono Dock del archivo, luego haga clic con el botón izquierdo Quit, como se muestra en la siguiente captura de pantalla:

observarás que no pasa nada. Es decir, la aplicación permanece abierta.

El atajo de teclado, ⌘ command+ Q, es igualmente inútil.

La única forma de salir de esta aplicación (excepto hacer clic en "Forzar salida" en Activity Monitor.app) es hacer clic en un botón en el cuadro de diálogo activo de la aplicación.

¿Es posible hacer que la función "Salir" inherente de una aplicación AppleScript salga de la aplicación, incluso si la aplicación muestra un cuadro de diálogo cuando se llama a la función "Salir"?


Nota: El display alertcuadro de diálogo y el choose from listcuadro de diálogo se comportan de la misma manera dominante que el display dialogcuadro de diálogo.

⌘Q no funciona porque está atenuado en el menú de la barra de menús de la aplicación. Puede hacer clic con el botón derecho en el mosaico del Dock de la aplicación y seleccionar Forzar salida en el menú contextual del mosaico del Dock de la aplicación. Dicho esto, no creo que haya ningún código AppleScript estándar que pueda implementar que cierre la aplicación mientras el cuadro de diálogo de visualización está presente haciendo clic en Salir en el menú contextual del mosaico del Dock de la aplicación.
No estaba familiarizado con la opción-clic derecho, "Forzar salida". Ese es un buen consejo. De hecho, este método cierra el cuadro de diálogo y la aplicación, tal como deseo. No puedo imaginar que exista una mejor respuesta. Entonces, si quieres publicar eso como respuesta, lo aceptaré. ¡Gracias!
Estaba demasiado cansado anoche para escribirlo en forma de una respuesta adecuada. :)

Respuestas (1)

La respuesta corta es, no .

La respuesta más larga es: por diseño, un AppleScript display dialogcrea un objeto modal de aplicación, lo que significa que hasta que el usuario responde a los controles del objeto, la aplicación espera hasta que recibe la entrada adecuada para ese objeto para que continúe.

Si existe un botón Cancelar y no el botón predeterminado, se puede descartar presionando la tecla Esc o presionando la tecla Comando y punto para activar el botón Cancelar. Si usa un botón Cancelar, puede atrapar el error y ejecutar uno returnque detendrá la ejecución del código restante de la aplicación.

Si no tiene un botón Cancelar, entonces no se puede descartar sin una interacción directa o forzar el cierre mediante cualquiera de varios métodos.

Para forzar la salida:

  • Puede hacer clic con el botón derecho en el mosaico del Dock de la aplicación y seleccionar Forzar salida en el menú contextual del mosaico del Dock de la aplicación.
  • Presione Opción-Comando-Esc para abrir el cuadro de diálogo Forzar salida de aplicaciones.
  • Fuerce la salida del Monitor de actividad.
  • Su proceso también se puede eliminar desde la Terminal de diferentes maneras, pero más allá del alcance de esta respuesta, ya que no es un método GUI.

Además, ⌘Q no funciona porque está atenuado en el menú de la barra de menús de la aplicación.

Todo esto también es cierto dentro del propio Editor de secuencias de comandos, no solo con una aplicación AppleScript. Una vez que a display dialogestá presente, se debe interactuar con la aplicación de manera adecuada o forzar el cierre de la aplicación por un método u otro.