2 votes

Comment arrêter l'agent de lancement de lancer à plusieurs reprises un script Apple donné

Je suis en train de créer un agent de lancement, qui lance un AppleScript chaque fois qu'une souris est connectée. Similaire à ces deux questions :

Cependant, une fois que je charge mon agent de lancement (via launchctl load), il continue de se lancer toutes les 5 secondes environ. Comment m'assurer que l'agent s'exécute une seule fois, lorsque la souris est connectée ?

Voici mon agent (plist) :

    KeepAlive

    Label
    com.automations.switchscrolldirection
    ProgramArguments

        osascript
        /Users/lirik/Documents/Automation/SwitchScrollDirectionOnMouseEvent.scpt

    LaunchEvents

        com.apple.iokit.matching

            com.apple.device-attach

                idProduct
                49277
                idVendor
                1133
                IOProviderClass
                IOUSBDevice
                IOMatchStream

                IOMatchLaunchStream

L'AppleScript en question :

on gamingMouseIsAttached()
    tell application "Préférences Système"
        activate
        set current pane to pane "com.apple.preference.mouse"
    end tell
    tell application "Événements Système" to tell process "Préférences Système"
        repeat until exists checkbox 1 of window "Souris"
        end repeat
        tell checkbox 1 of window "Souris" to if value is 1 then click

1voto

zen Points 201

La réponse est généralement que vous devez appeler xpc_set_event_stream_handler.

J'ai trouvé cet utilitaire incroyable qui appellera xpc_set_event_stream_handler pour supprimer l'événement de la file d'attente, puis appeler votre application désirée. Cela m'a permis de résoudre le problème que vous rencontrez sans écrire/compiler de code. Consultez github.com/snosrap/xpc_set_event_stream_handler et faites-le ensuite appeler votre osascript. Cela devrait résoudre votre problème.

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