0 votes

Impossible d'utiliser les événements système lors du lancement de démons et d'agents.

Je suis en train d'écrire un petit programme Go qui utilise osascript (basé sur mac2mqtt ) :

func getCommandOutput(name string, arg ...string) string {
    var outbuf, errbuf strings.Builder // or bytes.Buffer
    cmd := exec.Command(name, arg...)
    cmd.Stdout = &outbuf
    cmd.Stderr = &errbuf

    err := cmd.Run();

    stdout := outbuf.String()
    stderr := errbuf.String()

    if err != nil {
        log.Println(stderr)
        log.Fatal(stderr)
    }

    return strings.TrimSuffix(stdout, "\n")
}

func main() {
    runCommand("/usr/bin/osascript", "-e", "tell application \"zoom.us\"", "-e", "tell application \"System Events\"", "-e", "keystroke \"a\" using {shift down, command down}", "-e", "end tell", "-e", "end tell")
}

Après avoir compilé ce code dans un fichier appelé mac2mqttzoom J'obtiens un exécutable. Je lance chmod +x mac2mqttzoom exécutez-le à partir de Visual Studio Code, et obtenez ce dialogue :

J'ai appuyé sur OK et tout va bien. Ensuite, je crée un fichier LaunchAgent :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.adriaan.mac2mqttzoom</string>
        <key>Program</key>
        <string>/Users/adriaan/mac2mqtt/mac2mqttzoom</string>
        <key>WorkingDirectory</key>
        <string>/Users/adriaan/mac2mqtt/</string>
        <key>StandardOutPath</key>
        <string>/Users/adriaan/mac2mqtt/standard.log</string>
        <key>StandardErrorPath</key>
        <string>/Users/adriaan/mac2mqtt/error.log</string>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
    </dict>
</plist>

Mais lorsque je lance ce programme, j'obtiens cette erreur :

System Events got an error: osascript is not allowed assistive access. (-25211)

Uniquement en cas d'exécution avec des démons de lancement et des agents.

J'ai donné la permission via Acccessibility à toutes les applications concernées :

1voto

adriaan Points 331

Merci, @gordon-davisson de m'avoir guidé dans la bonne direction.

J'ai déplacé mon plist -fichier à /Library/LaunchDaemons/ et j'ai ajouté mon binaire aux applications d'accessibilité dans les préférences du système :

Vous devez le faire à chaque fois que votre binaire change. Je ne l'ai pas fait avant. Donc pour tous ceux qui rencontrent ce problème aussi :

  1. Mettez à jour votre propre application/binaire
  2. Supprimez-le de la liste d'accessibilité
  3. Ajoutez-le à la liste (via le bouton + ou glisser-déposer)
  4. Déchargez et chargez à nouveau votre application
    • sudo launchctl unload /Library/LaunchDaemons/your.app.plist
    • sudo launchctl load /Library/LaunchDaemons/your.app.plist

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