El servicio se bloquea al usar AppleScript para hacer clic en el icono de la barra de menú [duplicar]


0

El siguiente código de AppleScript hace clic en el icono de WiFi que se encuentra en la barra de menú (fuente) :

tell application "System Events" to tell process "SystemUIServer" to tell (menu bar item 1 of menu bar 1) to click

Complete los siguientes pasos para reproducir el error:

  1. En Automator.app, haga clic en FileNewService.

  2. Arrastre una Run AppleScriptacción al flujo de trabajo.

  3. Pegue la línea de código anterior en el cuerpo de AppleScript.

  4. Guarde y titular el Servicio .

  5. Ejecute el servicio .

Nunca se hace clic en el icono de WiFi, y en su lugar se me presenta el siguiente mensaje de error (dolorosamente ambiguo):

Observaciones sobre este error:

  • El código funciona correctamente cuando se compila y se prueba en Script Editor o Automator.

  • El servicio funciona correctamente cuando el servicio se activará desde el interior de Automator (es decir, cuando el la aplicación en primer plano es Automator).

  • El error persiste sin importar qué icono de barra de menú se especifique.

  • Agregar privilegios de administrador no resuelve el problema: do shell script "osascript -e 'tell application \"System Events\" to tell process \"SystemUIServer\" to tell (menu bar item 1 of menu bar 1) to click'" password "thePassword" with administrator privileges


¿Sabes qué puede causar este conflicto?

¿Existe una solución alternativa para que un servicio de AppleScript pueda hacer clic en el icono de la barra de menú ?


OS X El Capitan, versión 10.11.6.


Respuestas:


1

Esto funciona para mí en la última versión de macOS Sierra.

Seguí tus pasos exactamente. Sin embargo, este código que publicó debe modificarse para que funcione correctamente en mi sistema. Aquí está el código que usé y coloqué en una acción de AppleScript de Automator

tell application "System Events"
    click menu bar item 3 of menu bar 1 of application process "SystemUIServer"
end tell

También recibí el mismo mensaje de error que recibí cuando intenté ejecutar el servicio desde Finder (después de ejecutar con éxito el script en Automator y ScriptEditor)

En una corazonada, agregué la aplicación Finder a la lista de aplicaciones permitidas para controlar mi computadora.

ingrese la descripción de la imagen aquí

Luego volví al menú de servicios del Finder e intenté ejecutar el servicio nuevamente. ¡Bingo! Funcionó. Hice lo mismo con varias otras aplicaciones que tenía abiertas y no produjo el mensaje de error


Agradezco la solución funcional. El único inconveniente es que esencialmente debo agregar todas las aplicaciones que están instaladas en mi computadora a la lista de aplicaciones que pueden controlar mi computadora (porque el Servicio posiblemente se activará desde cualquier aplicación). Será un poco complicado hacer esto (y, por supuesto, anulará el propósito de esta característica de seguridad del sistema).
esfera de rubik

Volví a leer su respuesta varias veces, y luego releí mi comentario anterior varias veces. Algo se sintió extraño. Nuestro intercambio me hizo sentir intenso déjà vu. Resulta que ... este no es nuestro primer rodeo ;-). La solución para su solución es simplemente para guardar el tell application "System Events"...código como un archivo .app dedicado, conceder este una aplicación de acceso de asistencia en Preferencias del sistema, y luego activar este archivo .app en el código AppleScript del Servicio.
esfera de rubik
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.