1 votes

Le script fonctionne dans l'Éditeur de scripts mais pas en tant qu'application (MacOS Mojave)

Le script suivant fonctionne comme prévu dans l'Éditeur de script :

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

Lorsque je l'exporte dans un fichier .app et double-clique dessus pour l'exécuter, je reçois l'erreur suivante :

Impossible d'obtenir «class menE» 1 de «class mbri» 1 de «class mbar» 2 de «class pcap» "NordVPN IKE" de l'application "System Events". Index non valide.

System Events a renvoyé une erreur : Impossible d'obtenir le menu 1 de l'élément de la barre de menus 1 de la barre de menus 2 du processus de l'application "NordVPN IKE". Index non valide. (-1719)

Comment puis-je modifier le script pour qu'il fonctionne comme une .app ?

Merci

0voto

Walrus the Cat Points 932

Vous devez faire deux choses pour que cela fonctionne :

Tout d'abord, assurez-vous que System Events a lui-même les autorisations dans le panneau de préférences Accessibilité.

Deuxièmement, vous devriez ajouter un délai après avoir cliqué sur l'élément de menu pour lui laisser le temps de se charger. C'est finalement ce qui provoque l'erreur d'index, car le menu n'a pas encore propagé et essaie d'y accéder. Modifiez votre script comme suit :

....
        click nord
    end ignoring
end tell
delay 0.3
do shell script "killall System\\ Events"
....

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