lo script funziona in Script Editor ma non come app (MacOS Mojave)


1

Il seguente script funziona come previsto in Script Editor:

tell application "System Events"
    set nord to menu bar item 1 of menu bar 2 of application process "NordVPN IKE"
    ignoring application responses
        click nord
    end ignoring
end tell
do shell script "killall System\\ Events"
tell application "System Events"
    set nord to menu bar item 1 of menu bar 2 of application process "NordVPN IKE"
    tell menu 1 of nord
        if exists menu item "Disconnect" then
            click menu item "Disconnect"
        else
            click menu item "Connect"
        end if
    end tell
end tell

Quando lo esporto ae faccio .appdoppio clic su di esso per eseguirlo, ottengo il seguente errore:

Impossibile ottenere «class menE» 1 di «class mbri» 1 di «class mbar» 2 di «class pcap» "NordVPN IKE" dell'applicazione "Eventi di sistema". Indice non valido.

Errore di sistema: impossibile ottenere il menu 1 della voce di barra dei menu 1 della barra dei menu 2 del processo di applicazione "NordVPN IKE". Indice non valido. (-1719)

Come posso cambiare lo script in modo che funzioni come .app?

Grazie


È sotto Mojave? In tal caso, suppongo che sia una sorta di "protezione" che il sistema operativo sta utilizzando per impedire all'app (non firmata?) Di accedere agli Eventi di sistema, ma Script Editor è consentito perché è un'app firmata / nota. (Questo è uno dei motivi per cui rimango con High Sierra per ora, Mojave è molto aggressivo su questo genere di cose.) Se non è Mojave, sarebbe bene sapere quale versione di macOS / OS X / Mac OS X è .
TJ Luoma,


mi dispiace che il link non sia affatto d'aiuto. per favore rimuovi il banner in cima alla mia domanda. gli do tutto il permesso che mi chiede. se hai un modo per modificare lo script o eseguirlo in modo che funzioni, sarebbe una risposta accettabile.
Walrus the Cat,

Prova ad aggiungere una tell application "NordVPN IKE" to activateriga all'inizio del programma.
abc

Risposte:


0

Devi fare due cose per farlo funzionare:

Prima di tutto devi assicurarti che System Eventsabbia le autorizzazioni nel pannello delle preferenze di Accessibilità.

In secondo luogo, è necessario aggiungere un ritardo dopo aver fatto clic sulla voce di menu per dargli il tempo di caricare. Questo alla fine è ciò che sta causando l'errore dell'indice, perché il menu non si è ancora propagato e sta provando ad accedere agli elementi in esso. Cambia il tuo script nel modo seguente:

....
        click nord
    end ignoring
end tell
delay 0.3
do shell script "killall System\\ Events"
....
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.