AppleScript per visualizzare l'icona dell'area della barra di stato VPN

3

Sto cercando di scrivere un AppleScript per connettersi a un servizio VPN. Una volta connesso alla VPN, voglio visualizzare l'icona VPN nell'area di stato della barra dei menu.

Sono arrivato fino a

  • connessione a VPN
  • visualizzazione della sezione Rete delle Preferenze di Sistema

ma non riesco a selezionare il servizio. Come faccio?

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
    
posta Xerces 20.04.2012 - 16:16
fonte

1 risposta

3

La risposta alla tua domanda può essere divisa in due parti:

  1. La connessione a una VPN non è un'attività che richiede lo scripting della GUI (ad esempio, apri il pannello delle preferenze di rete e simula un clic su un elemento), poiché tale funzionalità è parte delle Preferenze di rete Suite di Eventi di sistema da Leopard (credo). Tutto ciò di cui hai bisogno è

    tell application "System Events"
        tell current location of network preferences
            connect service "<name of your VPN>"
        end tell
    end tell
    
  2. la visualizzazione della voce della barra di stato della VPN tuttavia non fa parte di Suite preferenze di rete . Se non riesci a convivere con l'icona presente in modo permanente nell'area della barra di stato, dovrai utilizzare lo scripting GUI per abilitarlo su richiesta:

    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
    

    nota questa parte, come sempre nello scripting della GUI, è potenzialmente molto dirompente: ruba l'attenzione all'utente, nel peggiore dei casi anche cancellando ciò che stava facendo se le stava usando le Preferenze di Sistema (c'è un'eccellente discussione su i pro e i contro dello scripting GUI per manipolare le Impostazioni di sistema prima delle Preferenze Suite su MacScripter ). È anche fragile (dato che è soggetta allo specifico layout dell'interfaccia utente del pannello delle preferenze), anche se se segui il modello che mostro sopra, usando gli indici e il recupero del nome del processo tramite l'ID dell'applicazione, questo almeno non sarà influenzato dai problemi di localizzazione .

risposta data 21.04.2012 - 18:57
fonte

Leggi altre domande sui tag