转换为 Apple 事件 AppleScript
Translate into Apple Events AppleScript
我有一个非常简单的 applescript:
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 代码。
有人可以帮助我理解输出的含义吗?
提前致谢
would expect to see calls to functions defined here
好吧,别再期待了。您拥有的是 Apple 事件 本身 ,以 AEPrint 符号表示,如此处解释:
https://developer.apple.com/library/archive/technotes/tn/tn2045.html
您可以使用它来构造相同的 Apple 事件,或者您可以使用更高级别的命令将其分成多个部分。但是无论哪种方式,系统都不能为您编写代码!这就是 Apple 活动,由 AppleScript 为您打造。学习阅读 AEPrint 符号、学习 Apple 事件的结构、学习手动构建相同的 Apple 事件,这些都是您必须自己做的事情。
举例说明您将使用的推理:
您的 Apple 活动以动词 coregetd
开头。这是相当于 get
(AppleScript 中的第一个词)的 Apple 事件,正如您从查看应用程序的 SDEF 字典中了解到的那样。
OK,现在我们知道动词了;什么是直接宾语?这是一个 URL
(注意 space,这些是四个字母的代码);那是相当于您的 URL
的 Apple 事件(同样,我们通过字典了解这一点)。
好吧,但是什么URL
?它是 acTa
的 URL
,也就是 active tab
(字典再次向我们展示了这种等价关系)。
好的,但是 acTa
是什么? ...
等等。以这种方式将 Apple 事件分解为属性、元素和对象说明符后,您可以通过 Carbon 或 Cocoa 命令再次构建它。
出于我无法理解的原因,您选择了踏上漫长的旅程。您已经选择放弃 AppleScript 符号的简单性并自己构建一个 Apple 事件。你选择了一条涉及很多知识的漫长道路。没有捷径;运行时不会为您编写代码。最长的旅程始于第一步。开始!
我有一个非常简单的 applescript:
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 代码。
有人可以帮助我理解输出的含义吗?
提前致谢
would expect to see calls to functions defined here
好吧,别再期待了。您拥有的是 Apple 事件 本身 ,以 AEPrint 符号表示,如此处解释:
https://developer.apple.com/library/archive/technotes/tn/tn2045.html
您可以使用它来构造相同的 Apple 事件,或者您可以使用更高级别的命令将其分成多个部分。但是无论哪种方式,系统都不能为您编写代码!这就是 Apple 活动,由 AppleScript 为您打造。学习阅读 AEPrint 符号、学习 Apple 事件的结构、学习手动构建相同的 Apple 事件,这些都是您必须自己做的事情。
举例说明您将使用的推理:
您的 Apple 活动以动词
coregetd
开头。这是相当于get
(AppleScript 中的第一个词)的 Apple 事件,正如您从查看应用程序的 SDEF 字典中了解到的那样。OK,现在我们知道动词了;什么是直接宾语?这是一个
URL
(注意 space,这些是四个字母的代码);那是相当于您的URL
的 Apple 事件(同样,我们通过字典了解这一点)。好吧,但是什么
URL
?它是acTa
的URL
,也就是active tab
(字典再次向我们展示了这种等价关系)。好的,但是
acTa
是什么? ...
等等。以这种方式将 Apple 事件分解为属性、元素和对象说明符后,您可以通过 Carbon 或 Cocoa 命令再次构建它。
出于我无法理解的原因,您选择了踏上漫长的旅程。您已经选择放弃 AppleScript 符号的简单性并自己构建一个 Apple 事件。你选择了一条涉及很多知识的漫长道路。没有捷径;运行时不会为您编写代码。最长的旅程始于第一步。开始!