Domanda

Il seguente codice AppleScript funziona bene:

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

Ma come posso fare lo stesso usando ScriptingBridge di cacao?

È stato utile?

Soluzione

In generale, si dovrebbe essere in grado di farlo a seguito di Apple Guida alla programmazione Scripting Bridge Cocoa . Per iniziare, ho creato un file di intestazione per Adium eseguendo sdef /Applications/Adium.app | sdp -fh --basename Adium nel Terminal (crea Adium.h nella directory corrente). Il file di intestazione prodotta dà indizi su come rendere l'AppleScript chiama attraverso il ponte di script.

Il problema che ho incontrato è che non riesco a vedere un modo, in base al file di intestazione generato, per fare make new chat with contacts {...} with new chat window (posso fare una nuova chat e forse anche agganciarlo in una nuova finestra, ma non riuscivo a trovare un modo di fare che la chat prendere il contatto).

La cosa migliore potrebbe essere quella di utilizzare NSAppleScript per eseguire il codice AppleScript valido:

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];

Altri suggerimenti

A corto di utilizzare codici evento Apple prime, non si può. Dovrebbe funzionare con objc-appscript però. Il funzionamento del vostro comando AppleScript attraverso lo strumento del ASTranslate appscript produce il seguente:

#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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top