2009-06-12 4 views
2

Pour l'application que j'écris, j'ai besoin d'accéder à d'autres applications, pour lesquelles Applescript semble être la meilleure solution. J'ai utilisé le framework Appscript, qui a bien fonctionné, car il m'a permis de l'enfiler et de ne pas bloquer mon application lorsqu'un Applescript prenait du temps. Cependant, maintenant j'essaye de rendre mon application 64 bits compatible, et il semble que le framework Appscript ne supporte pas 64 bits. Existe-t-il un "bon" moyen d'utiliser Applescript dans Cocoa qui ne verrouille pas mon application, mais qui me donne tout le contrôle dont j'ai besoin?Applescript à l'intérieur d'une application Cocoa

--firen

Répondre

6

Il semble que SBApplication devrait fonctionner, mais je l'ai pas utilisé auparavant.

Selon @cocoadevcentral:

SBApplication: utiliser pour faire les scripts inter-applications téléphoniques avec Objective-C au lieu de AppleScript. Ex: obtenir la piste iTunes actuelle.

est Voici l'extrait de la documentation:

La classe SBApplication fournit un mécanisme permettant à un programme Objective-C pour envoyer des événements d'Apple à une application scriptable et recevoir des événements d'Apple en réponse. Il permet ainsi à ce programme de contrôler l'application et d'échanger des données avec celle-ci. Scripting Bridge fonctionne en pontant les types de données entre les descripteurs d'événement Apple et les objets Cocoa.

Bien que SBApplication inclut des méthodes qui envoient et traitent manuellement des événements Apple, vous ne devriez jamais avoir à appeler directement ces méthodes. Au lieu de cela, les sous-classes de SBApplication implémentent des méthodes spécifiques à l'application qui traitent automatiquement l'envoi des événements Apple. Par exemple, si vous souhaitez obtenir la piste iTunes actuelle, vous pouvez simplement utiliser la méthode currentTrack de la sous-classe définie dynamiquement pour l'application iTunes (qui gère les détails d'envoi de l'événement Apple pour vous) plutôt que de déterminer plus compliquée, alternative à faible niveau:

[iTunes propertyWithCode:'pTrk']; 

Si vous avez besoin d'envoyer des événements Apple manuellement, pensez à utiliser la classe NSAppleEventDescriptor.

Espérons que ça aide!

2

Comme mentionné Blaenk Scripting pont peut bien être le chemin à parcourir, même si elle peut se révéler quelque peu inefficace si vous devez itérer à travers de grandes baies etc.

La façon la plus simple d'exécuter un AppleScript à Cocoa utilise NSAppleScript.

Apple a de très bons exemples, ce que j'ai trouvé utile quand je devais faire quelque chose de similaire. Il y a trois articles que vous pourriez vouloir regarder. Ils contiennent tous un exemple de code, que je trouve toujours très utile.

  • Quelques exemples de l'utilisation de scripts Pont
  • Performance & Optimisation avec les scripts Pont
  • NSAppleScript Technote/Exemple

Je créé un point essentiel avec les URL complètes que je ne peux pas poster plus qu'un lien, quoi avec être un débutant et tout.

http://gist.github.com/130146

1

il semble que le cadre Appscript ne prend pas en charge 64 bits.

Devrait fonctionner. Assurez-vous de définir les architectures correctes et SDK (64 bits requiert 10.5) dans le projet Xcode. Déposer un rapport de bug si vous avez un problème spécifique.