سؤال

يعمل رمز AppleScript التالي بشكل جيد:

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

ولكن كيف يمكنني أن أفعل نفس الشيء باستخدام ScriptGebridge الكاكاو؟

هل كانت مفيدة؟

المحلول

عموما، يجب أن تكون قادرا على القيام بذلك بعد Apple دليل البرمجة البرمارية دليل البرمجة للكاكاو. وبعد للبدء، قمت بإنشاء ملف رأس للأديوم عن طريق تشغيل sdef /Applications/Adium.app | sdp -fh --basename Adium في المحطة (يخلق Adium.h في الدليل الحالي). يعطي ملف الرأس الذي تم إنتاجه أدلة حول إجراء مكالمات AppleScript عبر جسر البرمجة النصية.

المشكلة التي ركضتها هي أنه لا أستطيع رؤية طريقة، بناء على ملف الرأس الذي تم إنشاؤه، للقيام به make new chat with contacts {...} with new chat window (يمكنني إجراء دردشة جديدة وربما ربطها في نافذة جديدة، لكنني لم أجد طريقة لجعل هذه الدردشة تأخذ جهة الاتصال).

أفضل شيء آخر قد يكون للاستخدام nsapplescript. لتنفيذ رمز 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];

نصائح أخرى

اختصار استخدام رموز الأحداث التفاح الخام، لا يمكنك ذلك. يجب أن تعمل مع OBJC-Appscript. على أية حال. يؤدي تشغيل أمر AppleScript الخاص بك من خلال أداة APPScript's Artranslate إلى تنتج ما يلي:

#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];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top