0

次のAppleScriptコードは正常に機能します。

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

しかし、CocoaのScriptingBridgeを使用して同じことを行うにはどうすればよいですか?

4

2 に答える 2

0

生の Apple イベント コードを使用しない限り、できません。ただし、 objc-appscriptで動作するはずです。appscript の ASTranslate ツールを介して AppleScript コマンドを実行すると、次のようになります。

#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];
于 2010-03-13T21:46:04.017 に答える
0

通常、Apple のScripting Bridge Programming Guide for Cocoaに従って実行できるはずです。まずsdef /Applications/Adium.app | sdp -fh --basename Adium、ターミナルで実行して Adium のヘッダー ファイルを作成しました (現在のディレクトリに Adium.h を作成します)。作成されたヘッダー ファイルは、Scripting Bridge を介して AppleScript 呼び出しを行う手がかりを提供します。

私が遭遇した問題は、生成されたヘッダー ファイルに基づいて、実行する方法が見つからないことですmake new chat with contacts {...} with new chat window(新しいチャットを作成し、それを新しいウィンドウにフックすることさえできますが、それを行う方法が見つかりませんでした)。チャットで連絡を取る)。

次善の策は、有効な AppleScript コードを実行するためにNSAppleScriptを使用することです。

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];
于 2010-03-14T06:19:04.903 に答える