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