Перевести на Apple Events AppleScript - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть очень простой яблочный скрипт:

tell application "Opera"
   get URL of active tab of window 1
end tell

Я хочу увидеть Apple Events.Поэтому я запустил его с включенными этими двумя переменными среды:

export AEDebugSends=1;
export AEDebugReceives=1

Теперь я получаю следующий вывод:

osascript browser.scpt 
{core,getd target='psn '[Opera] {----={form=prop,want=prop,seld=URL ,from={form=prop,want=prop,seld=acTa,from={form=indx,want=cwin,seld=1,from=NULL-impl}}}} attr:{csig=65536 returnID=15130}

Я ожидаю увидеть вызовы функций, определенных здесь: https://developer.apple.com/documentation/coreservices/apple_events?language=objc

Моя последняя цель - перевести этот Applescript в код c или Obj-C.

Может ли кто-нибудь помочь мне понять смысл вывода?

Заранее спасибо

1 Ответ

0 голосов
/ 05 декабря 2018

ожидал бы увидеть вызовы функций, определенных здесь

Что ж, прекрати ожидать этого.То, что у вас есть, это само событие Apple , выраженное в нотации AEPrint, как описано здесь:

https://developer.apple.com/library/archive/technotes/tn/tn2045.html

Это можно использовать для создания того же события Apple,или вы можете сформировать его по частям, используя команды более высокого уровня.Но в любом случае, это не зависит от системы, чтобы написать свой код для вас!Это событие Apple, созданное для вас AppleScript.Научиться читать нотацию AEPrint, изучить структуру события Apple, научиться создавать одно и то же событие Apple вручную - это все, что вы должны сделать сами.

Просто для примера рассуждения, которое вы будете использовать:

  • Ваше событие Apple начинается с глагола coregetd.Это событие Apple, эквивалентное get (первое слово в вашем AppleScript), как вы узнали из словаря SDEF приложения.

  • Хорошо, теперь мы знаем глагол;что за прямой объект?Это URL (обратите внимание на пробел, это четырехбуквенные коды);это событие Apple, эквивалентное вашему URL (опять же, мы узнаем об этом через словарь).

  • ОК, но что URL?Это URL из acTa, то есть active tab (опять же, словарь показывает нам эту эквивалентность).

  • ОК, но acTa чего?...

И так далее.После того, как вы разбили событие Apple на свойства и элементы и спецификаторы объектов таким образом, вы можете создать его заново с помощью команд Carbon или Cocoa.

Вы выбрали по причинам, которые меня избегают, приступить кочень долгое путешествиеВы решили отказаться от простоты нотации AppleScript и создать событие Apple самостоятельно.Вы выбрали долгий путь, включающий много обучения.Там нет ярлыка;среда выполнения не собирается писать ваш код для вас.Самое длинное путешествие начинается с первого шага.Начинайте!

...