J'ai découvert un bug très étrange avec les services.
Pour constater ce comportement, veuillez faire ce qui suit :
-
Assurez-vous que Safari se trouve dans votre Dock.
-
Ouvrez Automator. Créez un nouveau service.
-
Réglez le service pour qu'il ne reçoive "aucune entrée" dans "toute application".
-
Insérez une action "Exécuter AppleScript".
-
Collez le texte suivant dans l'action :
on run {input, parameters} delay 5 display dialog "Hello" tell application "Safari" to activate return input end run
-
Sauvez le service.
-
Fermez le service.
-
Rouvrez le service.
-
Automator doit vous présenter une boîte de dialogue demandant : "Voulez-vous installer le service "NomService" ?". Cliquez sur "Installer".
-
Lorsque la boîte de dialogue "Installation terminée" apparaît, cliquez sur "Terminé".
Maintenant, exécutez le service. Pour ce faire, cliquez sur le titre de l'application en cours dans le coin supérieur gauche de l'écran (deuxième élément de la barre de menu). Cliquez ensuite sur le titre du service.
Vous remarquerez que Safari s'ouvre immédiatement (comme en témoigne le point noir sous son logo dans le Dock). Safari s'ouvre avant le délai de 5 secondes et avant l'affichage de la boîte de dialogue "Bonjour".
Placer le activate
dans un sous-programme ne résout pas le problème.
Quelqu'un peut-il confirmer qu'il s'agit d'un bogue ? Je suis convaincu qu'il s'agit d'un bogue dans la fonction Services, car lorsque vous exécutez le service depuis Automator (en cliquant sur le bouton "play" dans le coin supérieur droit de la fenêtre Automator), le code s'exécute correctement.
S'il s'agit d'un bogue, quelqu'un a-t-il une solution de contournement pour que l'application ne soit pas ouverte avant l'exécution du code précédent ?
Mon Macbook Pro fonctionne sous OS X El Capitan, 10.11.6.
Ce bogue pourrait être lié à un autre comportement étrange que j'ai remarqué :
-
Quittez Safari.app et Automator.app, s'ils sont en cours d'exécution.
-
Affichez le dossier dans lequel les services de l'ordinateur sont stockés (/Users/Me/Library/Services/) dans le Finder.
-
Cliquez avec le bouton droit de la souris sur le fichier Service et ouvrez le fichier avec Automator.
Vous remarquerez que l'ouverture du fichier .workflow avec Automator activera Safari. Cela ne devrait pas être le cas.