0 votos

Cómo cerrar una aplicación con applescript o automator

Me gustaría cerrar (no salir) una aplicación específica utilizando applescript ejecutado en automator o en el propio automator

Mi lamentable intento:

tell application "lghub"
        close
end tell

Su resultado: "lghub" obtuvo un error: No se puede continuar el cierre".

También he intentado ejecutar el comando w shortcut, pero automator me dice que no puede ejecutar los atajos de teclado.

editar - no quiero salir de la aplicación, quiero cerrar la ventana para que el icono se oculte pero la aplicación siga activa en el fondo. ocultar no oculta el icono.

2voto

qarma Puntos 71

cuando cierras (el botón rojo de la ventana) la aplicación logitech g hub, se esconde el icono del dock mientras se mantiene funcionando en segundo plano.

Este comportamiento se ha implementado especialmente en la aplicación Logitech G Hub. No es típico de las aplicaciones en general, aunque me he encontrado con un par de otras que también lo hacen.

¿Es compatible con AppleScrip?

Lo primero que hay que determinar es si la aplicación Logitech G Hub es scriptable, es decir. ¿puede entender y ser controlado por los eventos de Apple? Los eventos de Apple son los mensajes entre aplicaciones que AppleScript utiliza para comunicarse con las aplicaciones con capacidad de scripting y enviar instrucciones para realizar una función determinada.

El discriminador más rápido en este sentido es utilizar AppleScript para enviar una instrucción a la aplicación Logitech G Hub diciéndole que cierre sus ventanas.

Para ello, cree un nuevo documento en script Editor y asegúrese de que la aplicación Logitech G Hub está funcionando con una ventana visible en la pantalla.

A continuación, escriba y ejecute el siguiente código:

tell application "lghub" to close its windows

Si la aplicación es scriptable, entonces ese es todo el código que necesitas, y tu problema está resuelto. Sin embargo, si arroja un error, será porque no podrá obtener el código de la aplicación windows .

De lo contrario, ...

En este caso, la solicitud es no con guión. Así que tendremos que recurrir al uso de Eventos del sistema en su lugar.

Eventos del sistema es una aplicación multipropósito, de fondo (es decir, invisible), que permite la creación de scripts y que tiene un montón de características. Una de las más populares entre los scripters novatos es su capacidad para hackear la interfaz de usuario y manipular los elementos gráficos en pantalla de casi cualquier aplicación.

Estos elementos incluyen botones, ventanas, barras de desplazamiento, cuadros de texto, etc. Para ello, es necesario conceder privilegios, por lo que recibirás algunas solicitudes de autorización al intentarlo por primera vez para cualquier aplicación. En es un posible problema de seguridad una vez que se concede la autorización, así que téngalo en cuenta teniendo en cuenta que lo que acabo de describir es competencia de Eventos del sistema". de asumir el control de cualquier elemento visual en la pantalla.

Asumiendo que estás bien con esto...

Comience con un documento en blanco en script Editor y ejecute el siguiente comando para obtener el identificador de paquete de la aplicación Logitech G Hub:

get the id of application "lghub"

Esto devolverá una cadena del tipo "com.logi.ghub" o algo así. Es otro medio por el que podemos referenciar la aplicación en lugar de utilizar su nombre ( "lghub" ). Es más robusto utilizar la aplicación id en lugar de su name en general, pero a veces es necesario en Eventos del sistema que no se relaciona con el application desde arriba, pero con un process (o application process ) que es algo independiente. A menudo, estos se denominan igual que el application que engendra el process pero a veces no lo son. Sin embargo, los identificadores de los paquetes son siempre idénticos.

Este es el código para cerrar la ventana con Eventos del sistema :

tell application "System Events" to tell (the first process ¬ whose bundle identifier is "com.logi.ghub") to tell ¬ the front window to if (exists) then tell attribute ¬ "AXCloseButton" to click its value

Esto apunta al proceso de la aplicación Logitech G Hub, que es un shell que contiene todo lo necesario para que la aplicación se ejecute. Esto incluye los elementos físicos de la interfaz de usuario, como la ventana, que primero identificamos si existe realmente (para evitar que se produzca un error si no existe), y si es así, leemos una referencia al botón rojo de cierre almacenado como uno de los attributes . Una vez que tenemos esa referencia, podemos decirle al botón que se comporte como si lo hubiéramos pulsado, es decir, que cierre la ventana.

Hecho.

Para restaurar la ventana, puedes hacerlo así:

tell application id "com.logi.ghub" to reopen

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