2009-06-12 2 views
2

Для приложения, которое я пишу, мне нужно получить доступ к некоторым другим приложениям, для которых Applescript кажется лучшим способом. Я использую фреймворк Appscript, который работал хорошо, потому что он позволял мне вставлять его и не блокировать приложение, когда Applescript занимал некоторое время. Тем не менее, теперь я пытаюсь сделать свое приложение совместимым с 64-битной версией, и, похоже, фреймворк Appscript не поддерживает 64-разрядную версию. Есть ли «хороший» способ использовать Applescript в Cocoa, который не будет блокировать мое приложение, но все-таки дать мне полный контроль, который мне нужен?Applescript Inside of the Cocoa Application

--firen

ответ

6

Похоже SBApplication должно работать, но я не использовал его раньше.

По @cocoadevcentral:

SBApplication: использование сделать сценариев кросс-приложений вызовов с Objective-C вместо AppleScript. Пример: получить текущий трек iTunes.

Вот это выдержка из документации:

Класс SBApplication обеспечивает механизм, позволяющий в Objective-C программу для отправки события компании Apple в скриптовое приложение и получать события компании Apple в ответ. Таким образом, это позволяет этой программе управлять приложением и обмениваться данными с ним. Scripting Bridge работает путем объединения типов данных между дескрипторами событий Apple и объектами Cocoa.

Хотя SBApplication включает методы, которые вручную отправляют и обрабатывают события Apple, вам никогда не придется обращаться к этим методам напрямую. Вместо этого подклассы SBApplication реализуют специфичные для приложения методы, которые автоматически обрабатывают отправку событий Apple.

Например, если вы хотите получить текущий трек iTunes, вы можете просто использовать метод currentTrack динамически определенного подкласса для приложения iTunes, который обрабатывает детали отправки события Apple для вас, а не вычисляет более сложный, низкоуровневый альтернатива:

[iTunes propertyWithCode:'pTrk']; 

Если вам нужно отправить события компании Apple вручную, рекомендуется использовать класс NSAppleEventDescriptor.

Надеюсь, что это поможет!

2

Как Blaenk упоминалось Scripting Bridge вполне может быть путь, хотя он может оказаться несколько неэффективным, если вы должны переборе больших массивов и т.д.

Самый простой способ для запуска Applescript в какао использует NSAppleScript.

У Apple есть несколько хороших примеров, которые я нашел полезными, когда мне нужно было сделать что-то подобное. Есть три статьи, на которые вы можете обратить внимание. Все они содержат некоторый пример кода, который я всегда считаю очень полезным.

  • Несколько примеров использования сценариев Bridge
  • Производительность & Оптимизация с помощью сценариев моста
  • NSAppleScript Technote/Пример

Я создал суть с полными URL, как я не могу опубликовать более чем одна ссылка, что, будучи новичком и всеми.

http://gist.github.com/130146

1

кажется, что основа Appscript не поддерживает 64 бит.

Должно работать. Убедитесь, что вы установили правильные архитектуры и SDK (требуется 64-бит для 10,5) в проекте Xcode. Создайте отчет об ошибке, если у вас есть конкретная проблема.