【问题标题】:Translate into Apple Events AppleScript翻译成 Apple 事件 AppleScript
【发布时间】:2018-12-05 18:42:59
【问题描述】:

我有一个非常简单的applescript:

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

我想查看底层的 Apple 事件。所以我在启用这两个环境变量的情况下启动了它:

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 代码。

有人可以帮我理解输出的含义吗?

提前致谢

【问题讨论】:

    标签: c applescript macos-carbon appleevents


    【解决方案1】:

    希望看到对此处定义的函数的调用

    好吧,别再期待了。您所拥有的是 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 (注意空格,这些是四个字母的代码);那是您的URL 的Apple 事件等价物(同样,我们通过字典了解这一点)。

    • 好的,但是URL 是什么?它是acTaURL,即active tab(再次,字典向我们展示了这种等价性)。

    • 好的,但是acTa 是什么? ...

    等等。一旦您以这种方式将 Apple 事件分解为属性、元素和对象说明符,您就可以通过 Carbon 或 Cocoa 命令再次构建它。

    出于我无法理解的原因,你选择踏上一段漫长的旅程。您选择抛弃 AppleScript 符号的简单性并自己构建一个 Apple 事件。你选择了一条涉及大量学习的漫长道路。没有捷径;运行时不会为您编写代码。最长的旅程从第一步开始。开始!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      相关资源
      最近更新 更多