Question

Le code AppleScript suivant fonctionne très bien:

tell application "Adium" to tell first account to make new chat with contacts {first contact} with new chat window

Mais comment puis-je faire la même chose en utilisant ScriptingBridge de cacao?

Était-ce utile?

La solution

En général, vous devriez être en mesure de le faire suivant d'Apple Scripting pont Guide de programmation Cocoa. Pour commencer, j'ai créé un fichier d'en-tête pour Adium en exécutant sdef /Applications/Adium.app | sdp -fh --basename Adium dans le Terminal (crée Adium.h dans le répertoire courant). Le fichier d'en-tête produit donne des indices sur l'AppleScript faire des appels via le pont de script.

Le problème que je suis tombé sur est que je ne vois pas un moyen, basé sur le fichier d'en-tête généré, pour faire make new chat with contacts {...} with new chat window (je peux faire un nouveau chat et peut-être accrocher même dans une nouvelle fenêtre, mais je ne pouvais pas trouver un façon de faire que le chat prendre contact).

La meilleure chose est peut-être utiliser NSAppleScript pour exécuter votre code valide AppleScript:

NSAppleScript *appleScript = [[NSAppleScript alloc] initWithSource:@"tell application \"Adium\" to tell first account to make new chat with contacts {first contact} with new chat window"];
NSDictionary *errorDictionary;
NSAppleEventDescriptor *eventDescriptor = [appleScript executeAndReturnError:&errorDictionary];

Autres conseils

Court d'utiliser les codes d'événement d'Apple premières, vous ne pouvez pas. Devrait travailler avec objc-appscript bien. Exécution de votre commande AppleScript grâce à l'outil de ASTranslate de appscript produit les éléments suivants:

#import "ADGlue/ADGlue.h"
ADApplication *adium = [ADApplication applicationWithName: @"Adium"];
ADReference *ref = [[adium accounts] at: 1];
ADMakeCommand *cmd = [[[[ref make] newChatWindow: ASTrue] withContacts: [NSArray arrayWithObject: [[[[adium accounts] at: 1] contacts] at: 1]]] new_: [ADConstant chat]];
id result = [cmd send];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top