2 votos

¿Cómo obtengo acceso a elemento de la barra de menú en Bartender 3 usando AppleScript?

Para el software de la barra de menús superior derecha, puedo usar AppleScript siguiente para acceder a los elementos de barra de menú como este

activate application "SystemUIServer"
set deviceName to "Somebody's AirPods"

tell application "System Events"
    tell process "SystemUIServer"
        set bluetoothMenu to (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
        tell bluetoothMenu
            click

            set deviceMenuItem to (menu item deviceName of menu 1)
            tell deviceMenuItem
                click

                if exists menu item "Connect" of menu 1 then
                    click menu item "Connect" of menu 1
                    return "Connecting..."
                else
                    set batteryLevelMenuItem to (menu item 3 of menu 1)
                    tell batteryLevelMenuItem
                        set batteryLevelText to title of batteryLevelMenuItem
                    end tell

                    key code 53 -- esc key

                    return batteryLevelText
                end if
            end tell
        end tell
    end tell
end tell

Este AppleScript me ayuda a conectar a mi AirPods. Pero si pongo el elemento de bluetooth en Bartender 3, no funciona. ¿Qué debo añadir en los códigos para acceder a artículo en Bartender?

15voto

qarma Puntos 71

Estoy recolectando desde el texto que desea acceder a un elemento de menú de Camarero 3 que se encuentra en la barra de menú en mucho la misma manera que mi Dropbox app:

MacOS Menu Bar

Espero haber esta bien, para no tener Camarero a mí mismo. Sin embargo, saber cómo acceder a la opción de menú con AppleScript no es demasiado difícil. Como se ha venido haciendo ya, vamos a utilizar la GUI de secuencias de comandos para hacer esto, así que asegúrese de Editor de secuencias de Comandos tiene permiso para controlar su equipo, en Preferencias del Sistema > Seguridad Y Privacidad > Privacidad > Accesibilidad (MacOS Alta de la Sierra).

Porque no tengo Camarero a mí mismo, tengo que hacer un trabajo de detective en AppleScript para mí (pero es una buena práctica, como se muestra cómo resolver problemas como este en el futuro):

Parte 1: Acceso al Menú de Icono

Ejecute este comando:

tell application "System Events" to get every process whose name contains "bartender"

Me encontré con un comando similar para "dropbox" y se devuelve esto:

    --> {application process "Dropbox", 
         application process "DropboxActivityProvider"}

Me imagino Camarero se tienen uno o dos de los procesos más así. Uno de ellos es, probablemente, llamado "Barman". Elegir de que, a menos que el otro tiene obviamente una útil nombre, como "BartenderMenu" (yo lo dudo).

Ahora ejecute este, sustituyendo en el apropiado nombre de proceso (que es sensible a mayúsculas):

tell application "System Events" to tell process "Bartender" to get every menu bar

Esperemos que devuelve esto:

    --> {menu bar 1 of application process "Bartender" of application "System Events", 
         menu bar 2 of application process "Bartender" of application "System Events"}

menu bar 1 es el menú de la barra que contiene el Menú Apple (Apple Menu) en la parte superior izquierda. menu bar 2 (si existe) será el menú de la barra que contiene el icono de la aplicación.

Ahora usted debería ser capaz objetivo de que el icono de menú con este comando:

tell application "System Events" to tell process "Bartender" to ¬
    click menu bar item 1 of menu bar 2

Esperemos que debe solucionarlo. La integridad, aquí una línea de trabajo que se lleva toda la barra de menú de aplicaciones en uno:

tell application "System Events" to get menu bar 2 of every process

Se devolverá un organizar, la mayoría de cuyos elementos estarán missing value (en representación de los procesos que no tienen una segunda barra de menú-los únicos que no están de barra de menú de aplicaciones). Entre los valores que faltan serán los nombres de las aplicaciones que sentarse en la parte de arriba, y probablemente se puede solo tienes que elegir "Bartender" (o lo que sea que va a ser llamado) en seguida el uso de este método.

Parte 2: Acceder al Menú y sus Elementos de Menú

Si, cuando normalmente haga clic en el menú del icono de la aplicación de Camarero, se muestra un menú, a continuación, usted querrá saber cómo acceder a los elementos de menú de AppleScript así.

El menú en sí, no llegó a existir hasta que el icono que se ha hecho clic y aparecerá el menú. El menú es (o será) llamado menu 1. Cada uno de sus elementos de menú se llama menu items y hace referencia por su nombre (que es el texto del elemento de menú en sí, por ejemplo, "Dejar de Camarero 3").

Aquí es el comando que va a acceder al menú:

tell application "System Events" to tell process "Bartender" to ¬
    get menu items of menu 1 of menu bar item 1 of menu bar 2

Sin embargo, es necesario llevar el menú a la existencia en primer lugar, de lo contrario se acaba de tirar un error o regresar missing value. Por lo tanto, ejecute el comando haga clic en el menú del icono de la aplicación en primer lugar, a continuación, ejecute:

tell application "System Events" to tell process "Bartender" to ¬
    tell menu bar item 1 of menu bar 2
        click
        get menu items of menu 1
    end tell

Y, del mismo modo, se puede emitir un click comando a un elemento de menú de su elección haciendo referencia a su nombre:

click menu item "Quit Bartender 3" of menu 1

(convenientemente cerrado en el correspondiente tell declaraciones/bloques).

Por Último: Que Molesto Retraso

Molesto, habrá un retardo de 5 segundos entre la emisión de una click comando y recuperar la lista de elementos de menú. No sé por qué, pero sí sé que es un estándar que otros usuarios del informe. Aquí's de la cuestión planteada sobre Stack Overflow junto con alguien de la supuesta solución para el problema (no he probado a mí mismo).

Cualquier duda o problema, deja un comentario y voy a hacer mi mejor esfuerzo para ayudar.

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