3 votes

AppleScript pour afficher l'icône de la zone de la barre d'état VPN

J'essaie d'écrire un AppleScript pour me connecter à un service VPN. Une fois connecté au VPN, je veux afficher l'icône VPN dans la zone d'état de la barre de menu.

Je suis allé aussi loin que

  • se connecter au VPN
  • en affichant la section Réseau des Préférences Système

mais je ne parviens pas à sélectionner le service. Comment dois-je procéder ?

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 Points 1524

La réponse à votre question peut être divisée en deux parties :

  1. se connecter à un VPN n'est pas une tâche qui nécessite un script d'interface graphique (par exemple, ouvrir le volet des préférences du réseau et simuler un clic sur un élément), car cette fonctionnalité fait partie de l'interface graphique de l'utilisateur. Suite de préférences réseau de Événements du système depuis Leopard (je pense). Tout ce dont vous avez besoin est

    tell application "System Events"
        tell current location of network preferences
            connect service "<name of your VPN>"
        end tell
    end tell
  2. affichage de l'élément de la barre d'état VPN ne fait toutefois pas partie de la Suite de préférences réseau . Si vous ne pouvez pas accepter que l'icône soit présente en permanence dans votre barre d'état, vous devrez utiliser un script GUI pour l'activer à la demande :

    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

    Notez que cette partie, comme toujours dans les scripts GUI, est potentiellement très perturbante : elle vole l'attention de l'utilisateur, dans le pire des cas, elle annule même ce qu'il était en train de faire s'il s'avère qu'il utilisait les Préférences Système (il y a une excellente discussion sur les avantages et les inconvénients des scripts GUI pour manipuler les Paramètres Système, antérieure au Préférences Suites à l'adresse MacScripteur ). Il est également fragile (car il est soumis à la disposition spécifique de l'interface utilisateur du volet des préférences), bien que si vous suivez le modèle que je montre ci-dessus, en utilisant des index et la récupération du nom du processus via l'ID de l'application, il ne sera au moins pas affecté par les problèmes de localisation.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X