Comment obtenir le nom de l'application avec AppleScript et l'utiliser pour obtenir le chemin du fichier
Ce que j'essaie de faire:
Quand je suis dans un de mes éditeurs de texte (TextEdit, de Raillerie, FoldingText) je veux que ce AppleScript pour afficher le chemin d'accès au fichier.
J'ai pensé demander la fenêtre au premier plan app obtenir de moi le apps nom de nice et facilement et puis je peux vous demander le chemin POSIX dans l'étape suivante.
Le Problème:
Le script est déjà à 99%, mais il me manque quelque chose. Lorsque j'essaie d'utiliser la variable de activeApp
il ne fonctionne pas et j'obtiens cette erreur:
Error Number:System Events got an error: Can’t get application {"TextEdit"}.
-1728
Voici le script:
tell application "System Events"
set activeApp to name of application processes whose frontmost is true
--This doesn't work either:
--do shell script "php -r 'echo urldecode(\"" & activeApp & "\");'"
tell application activeApp
set myPath to POSIX path of (get file of front document)
end tell
display dialog myPath
end tell
Si je change activeApp
avec "TextEdit"
tout fonctionne. De l'aide serait appréciée.
Peut-être il y a quelque chose ici qui permet de: Obtenir des processus de nom de nom de l'application et vice versa, à l'aide d'Applescript
source d'informationauteur pattulus
Vous devez vous connecter pour publier un commentaire.
Obtenir soit l'
path
propriété d'un document ou d'utiliser les Événements du Système pour obtenirvalue of attribute "AXDocument"
:La première méthode ne fonctionne pas avec Aperçu, TextMate 2, Sublime Text, ou iChm, et la deuxième méthode ne fonctionne pas avec le Gland. La seconde méthode nécessite l'accès pour les périphériques d'aide pour être activé.
Vous demandez...
Avis "processus", c'est le pluriel qui signifie que vous pouvez obtenir plusieurs processus en réponse, de sorte que applescript vous donne une liste de noms. Même si une seule demande est retournée il est encore dans le format de liste. Aussi que votre erreur contient {"TextEdit"}. Les parenthèses autour du nom de dire que c'est une liste, de sorte que l'erreur est de vous montrer le problème.
Vous ne pouvez pas passer d'une liste de noms pour la prochaine ligne de code. En tant que tel vous avez un couple de choix. 1) vous pouvez demander pour 1 seul processus à la place de tous les processus. Qui retourne une chaîne de caractères au lieu d'une liste. Essayez ce code...
2) vous pouvez travailler avec la liste à l'aide de "l'élément 1 de la liste". Essayez ce code...
Enfin, vous ne devriez pas dire à des événements du système à dire à l'application. Séparer ces 2 dire des blocs de code. Voici comment j'aurais pu écrire votre code.
Je ne peux pas promettre le "get file de l'avant-document" code du travail. Qui dépend de l'application. Les applications ne seront pas comprendre cette demande. C'est pourquoi j'ai utilisé un bloc try. En tout cas, si vous pouvez être certain que vous vous adressez à la bonne application. Bonne chance.
J'ai été en utilisant ce modèle pour un certain temps, semble fonctionner pour toutes les applications Cocoa (pas sûr de X11):
Rien de tout cela semble fonctionner avec la compilation d'un AppleScript enregistré comme une application et placé sur la station d'accueil. Chaque fois que vous exécutez l'application, IL est au premier plan, et non pas l'application qui est en montrant sa fenêtre avant. Cette application devient inactif, mon Applescript exécute. Comment puis-je écrire une application Applescript qui n'est pas actif quand il fonctionne?
J'ai peut-être trouvé une solution à ce problème énumérés ci-dessus. Il suffit d'indiquer à l'utilisateur de réactiver l'application souhaitée, et de leur donner le temps.