3 votos

AppleScript para mostrar el VPN de la barra de estado el icono de

Estoy tratando de escribir un AppleScript para conectarse a un servicio de VPN. Una vez conectado a la VPN, quiero mostrar el icono de VPN en el área de estado de la barra de menú.

He llegado tan lejos como

  • la conexión a la VPN
  • la visualización de la sección de la Red de Preferencias del Sistema

pero soy incapaz de seleccionar el Servicio. ¿Cómo puedo hacer eso?

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.network"
    tell application "System Events" to tell process "System Preferences" to tell window "Network"
        -- code to select the VPN Service "XYZ" and click the "Show VPN Status in menu"
    end tell
end tell

3voto

Ryan Spears Puntos 1524

La respuesta a tu pregunta puede ser dividido en dos partes:

  1. conectar a una VPN no es una tarea que necesita de la GUI de secuencias de comandos (es decir, abra el panel de preferencias de red y simular un clic sobre un elemento), ya que la funcionalidad es parte de la Red de Preferencias Suite de Eventos del Sistema desde Leopard (creo). Todo lo que necesitas es

    tell application "System Events"
        tell current location of network preferences
            connect service "<name of your VPN>"
        end tell
    end tell
    
  2. mostrar el estado de VPN elemento de la barra sin embargo, no es parte de la Red de Preferencias Suite. Si usted no puede vivir con el icono de estar presente de forma permanente en la barra de estado área, usted tendrá que usar interfaz gráfica de usuario de secuencias de comandos para habilitar en la demanda:

    property vpnToUse : "<name of your VPN>"
    tell application "System Events"
        -- first activate the network pane, wait for it to load
        -- also might want to make sure this does not interrupt user interaction
        <your code here>
        -- get the index of the VPN in the service list
        tell current location of network preferences
            repeat with i from 1 to (count of every service)
                if name of (service i) is vpnToUse then
                    set listIndex to i
                    exit repeat
                end if
            end repeat
        end tell
        -- select the VPN item in the service list and activate status bar item
        tell process (name of application id "com.apple.systempreferences")
            tell window 1
                select row listIndex of table 1 of scroll area 1
                tell checkbox 1 of group 1
                    -- only click if not already activated
                    if value is 0 then click it
                end tell
            end tell
        end tell
    end tell
    

    la nota de esta parte, como siempre en la GUI de secuencias de comandos, es potencialmente muy perjudicial: se roba el foco desde el usuario, en el peor de los casos, la cancelación de todo lo que estaba haciendo si ella pasó a ser mediante las Preferencias del Sistema (hay una excelente discusión sobre los pros y los contras de la GUI de secuencias de comandos para manipular la Configuración del Sistema anterior a las Preferencias de Suites en MacScripter). Es también frágil (ya que está sujeto a los específicos de diseño de interfaz de usuario del panel de preferencias), aunque si sigue el modelo que presento anteriormente, el uso de índices y nombre de proceso de recuperación a través de la ID de la aplicación, que al menos no se ve afectada por los problemas de localización.

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