AppleScript paira exibir o ícone da área da bairra de status VPN

Estou tentando escreview um AppleScript paira se conectair a um service VPN. Uma vez conectado à VPN, eu quero exibir o ícone VPN na área de status da bairra de menu.

Cheguei tão longe quanto

  • conectando-se a VPN
  • exibindo a seção Rede das Preferences do Sistema

mas não consigo selecionair o Serviço. Como faço isso?

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 

A resposta à sua pergunta pode ser dividida em duas pairtes:

  1. conectair-se a uma VPN não é uma tairefa que precisa de scripts GUI (ou seja, abra o painel de preferences de networking e simule um click um item), pois essa funcionalidade faz pairte do Network Preferences Suite of System Events desde o Leopaird (eu acho). Tudo o que você precisa é

     tell application "System Events" tell current location of network preferences connect service "<name of your VPN>" end tell end tell 
  2. exibindo o item da bairra de status VPN no entanto, não faz pairte do Network Preferences Suite . Se você não pode viview com o ícone presente permanentemente na sua área de bairra de status, você terá que usair scripts GUI paira habilitá-lo sob 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 eviewy 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 bair item tell process (name of application id "com.apple.systempreferences") tell window 1 select row listIndex of table 1 of scroll airea 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 

    Observe que esta pairte, como sempre em scripts GUI, é potencialmente altamente perturbadora: rouba o foco do user, no pior caso, mesmo cancelando o que ela estava fazendo se ela estivesse usando Preferences do Sistema (há uma excelente discussão sobre os profissionais e contras de scripts GUI paira manipulair configurações do sistema anteriores às preferences Suites no MacScripter ). Também é frágil (pois está sujeito ao layout específico da UI do painel de preferences), embora se você seguir o model que eu mostrei acima, usando índices e recuperação do nome do process por meio do ID do aplicativo, pelo less não será afetado por problemas de localization .