Запустить AppleScript из приложения Cocoa

Возможно ли запустить код AppleScript внутри приложения Cocoa?

Я пробовал class NSAppleScript, но не добился успеха.

Кроме того, разрешает ли Apple это?

Вы упомянули, что xcode не сохраняет скрипт на пути ресурсов вашего приложения. Это верно. Вы должны сказать xcode, чтобы сделать это. Сначала добавьте скомпилированный скрипт в свой проект. Затем откройте свою цель и найдите действие «Copy Bundle Resources». Перетащите свой скрипт из списка файлов в это действие. Таким образом, ваш скрипт автоматически копируется на ресурсы вашего приложения, поэтому вам не нужно делать это вручную.

Всякий раз, когда я использую скомпилированный AppleScript в приложении для cocoa, я добавляю сценарий к проекту, 2) создаю новый class для управления AppleScript, 3) используем ниже описанный метод init для classа и 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 из приложения Cocoa, используйте следующее:

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

Из документации 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 } } 
  • Напишите UIImage вместе с метаданными (EXIF, GPS, TIFF) в библиотеке фотографий iPhone
  • NSLocale currentLocale всегда возвращает «en_US», а не текущий язык пользователя
  • Поиск через NSString с использованием регулярного выражения
  • Заменить несколько символов в строке в Objective-C?
  • Каков наилучший способ поместить c-struct в NSArray?
  • Добавление объекта C ++ в Objective-C Class
  • Загрузка изображения через POST в Objective C
  • Как сделать преобразование строк в Objective-C?
  • Извлечение текста pdf в Objective C
  • Как получить столбец datetime в SQLite с Objective C
  • Что такое Objective C ++?
  • Interesting Posts

    MVC HTML Helpers и выражения lambda

    Объявления переменных в файлах заголовков – статические или нет?

    Исключение в streamе «main» java.lang.UnsupportedClassVersionError: a (Unsupported major.minor version 51.0)

    Является ли 1.0 действительным выходом из std :: generate_canonical?

    Многократное использование позиционного оператора `$` для обновления вложенных массивов

    Отображение даты сборки

    Как найти последнего общего предка двух ветвей Git?

    Как отчет о работе коммутатора Реализован или работает внутри страны?

    Работает ли компьютер с футляром, открытым беспорядком с воздушным потоком / охлаждением?

    Как я могу горизонтально выровнять свои div?

    Как узнать, какая версия HDMI поддерживает моя система – Ubuntu Linux (10.10)

    Существует ли в Java обычная библиотека рациональных чисел?

    Internet Explorer 9 не правильно отображает ячейки таблицы

    Форматирование Word – необходимо выравнивать слева направо, справа налево в одной строке

    Получить метаданные изображения – Android

    Давайте будем гением компьютера.