Возможно ли запустить код AppleScript внутри приложения Cocoa?Запуск AppleScript из приложения Cocoa
Я пробовал класс NSAppleScript, но не удался.
Кроме того, разрешено ли Apple?
Возможно ли запустить код AppleScript внутри приложения Cocoa?Запуск AppleScript из приложения Cocoa
Я пробовал класс NSAppleScript, но не удался.
Кроме того, разрешено ли Apple?
Вы упомянули Xcode не спасал сценарий к пути ресурсов вашего приложения. Это верно. Вы должны сказать xcode, чтобы сделать это. Сначала добавьте скомпилированный скрипт в свой проект. Затем откройте свою цель и найдите действие «Copy Bundle Resources». Перетащите свой скрипт из списка файлов в это действие. Таким образом, ваш скрипт автоматически копируется на ресурсы вашего приложения, поэтому вам не нужно делать это вручную.
Всякий раз, когда я использую скомпилированный AppleScript в приложении для какао, я добавляю сценарий к проекту, 2) создаю новый класс для управления AppleScript, 3) используем ниже метод init для класса и 4) перетащите скрипт в действие «Копировать ресурсы Bundle» цели.
- (id)init {
NSURL *scriptURL = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"applescripts" ofType:@"scpt"]];
if ([self initWithURLToCompiledScript:scriptURL] != nil) { //attempt to load the script file
}
return self;
}
Спасибо. Задача решена. :) –
Решенный!
XCode не сохранял мой файл сценария в пути ресурсов приложения. Чтобы запустить код AppleScript из какао Application, используйте:
NSString* path = [[NSBundle mainBundle] pathForResource:@"ScriptName" ofType:@"scpt"];
NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary];
NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors];
[appleScript executeAndReturnError:nil];
[appleScript release];
У меня есть сценарий для яблока, из которого я могу получить тело письма и тему. когда я вызываю этот скрипт из кода выше, как я могу получить эти данные результата (тело письма и тема) Mail? – kushalrshah
От компании Apple Документации https://developer.apple.com/library/mac/technotes/tn2084/_index.html
- (IBAction)addLoginItem:(id)sender
{
NSDictionary* errorDict;
NSAppleEventDescriptor* returnDescriptor = NULL;
NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:
@"\
set app_path to path to me\n\
tell application \"System Events\"\n\
if \"AddLoginItem\" is not in (name of every login item) then\n\
make login item at end with properties {hidden:false, path:app_path}\n\
end if\n\
end tell"];
returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
[scriptObject release];
if (returnDescriptor != NULL)
{
// successful execution
if (kAENullEvent != [returnDescriptor descriptorType])
{
// script returned an AppleScript result
if (cAEList == [returnDescriptor descriptorType])
{
// result is a list of other descriptors
}
else
{
// coerce the result to the appropriate ObjC type
}
}
}
else
{
// no script result, handle error here
}
}
'NSAppleScript' общественного класса, так будет разрешен руководящими принципами App Store компании Apple. –