Frage

Der folgende Applescript-Code funktioniert:

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

Aber wie kann ich das gleiche tun mit Cocoa ScriptingBridge?

War es hilfreich?

Lösung

Im Allgemeinen sollten Sie in der Lage sein, es zu tun folgenden Apples Scripting-Brücke Leitfaden für Cocoa Programmierung . Um zu beginnen, ich eine Header-Datei für Adium erstellt von sdef /Applications/Adium.app | sdp -fh --basename Adium im Terminal ausgeführt (erzeugt Adium.h im aktuellen Verzeichnis). Die Header-Datei erzeugt gibt Aufschluss über die Herstellung der Apple Anrufe über das Scripting Bridge.

Das Problem, das ich lief in ist, dass ich nicht eine Art und Weise, basierend auf der erzeugten Header-Datei sehen kann, make new chat with contacts {...} with new chat window zu tun (ich kann einen neuen Chat und vielleicht sogar in ein neues Fenster Haken, aber ich konnte eine nicht gefunden Art und Weise, dass Chat macht den Kontakt nehmen).

Die nächste beste Sache, um Nutzen sein könnte: NSAppleScript Ihren gültigen Applescript-Code ausführen:

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

Andere Tipps

Short von rohem Apple-Event-Codes verwenden, können Sie nicht. Sollte die Arbeit mit objc-appscript though. Starten Sie Ihren Apple Befehl durch ASTranslate Tool appscript erzeugt die folgende:

#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];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top