【问题标题】:Applescript API documentationApplescript API 文档
【发布时间】:2012-07-28 09:56:16
【问题描述】:

我想制作一个 AppleScript 来自动完成在 MacBook Pro Retina 上切换分辨率的任务。

在互联网上搜索“applescript 系统首选项”时,我遇到了a page,其中显示了一些首选项。作为缩放分辨率的新事物,它没有记录。

这给 AppleScript 带来了一个更大的问题(请注意,除了复制粘贴我从未真正在其中编写过的东西)。例如,告诉我系统偏好设置对象实际上称为“系统偏好设置”的文档在哪里,它具有称为“窗格”的对象,它们有一个 ID,并且公开 ID 是“com.apple.preference” .expose”?

似乎每个程序都必须有某种“秘密”文档,而且它们必须很大,映射所有对象层次结构和可能的操作。最后,AppleScript 核心是最小的,您所做的就是操作这些程序。但是它们记录在哪里?

【问题讨论】:

    标签: macos applescript


    【解决方案1】:

    好的,这就是它的工作原理:

    例如,告诉我系统偏好设置对象实际上称为“系统偏好设置”的文档在哪里

    该对象称为“系统偏好设置”,因为这是应用程序的确切名称。你用这个告诉 Applescript 我想和名为 System Preferences 的应用程序交谈 (tell application "System Preferences" ...)

    它有称为“窗格”的对象

    现在是有趣的部分。如果您打开您的库窗口(在 Applescript 编辑器中,窗口 > 库),您将看到有一组可编写脚本的应用程序可用,问题是“系统偏好设置”不存在。所以让我们找到它:文件 > 打开词典 > 系统偏好设置。现在你有一个窗口,它可以让你深入了解应用程序的所有可用类/命令/属性,还有一个包含相关文档的拆分窗口(如果你点击 SSystem Preferences 你会看到 Cpane 并单击此按钮,您将看到 Pid 等)。窗格的 id 将再次成为窗格的名称(小写并连接 - 我仍在查看文档以获取对此的严格定义)。我希望这能让你开始。


    S:套件 C:类 P:属性 (圆圈内的“C”代表Command)

    【讨论】:

      【解决方案2】:

      你完全正确。每个程序都有自己的 applescript 文档。它被称为它的applescript 字典。您可以通过以下任何方式查看任何应用程序的字典...

      1) 在 AppleScript 编辑器中,在“文件”菜单下,选择“打开字典...”。您可以从那里选择一个应用程序,它将显示其字典。

      2) 将应用程序拖放到 AppleScript 编辑器的图标上。

      3) 有一个用于快速访问的常用词典列表。在 AppleScript Editor 的 Window 菜单下选择“Library”。您可以双击该列表中的应用程序。您还可以修改该列表以包含列表中所需的词典。

      祝你好运。

      【讨论】:

        【解决方案3】:

        您可以让 AppleScript 告诉您每个窗格的 ID。

        tell application "System Preferences" to get the id of every pane
        

        这特别方便,因为它会告诉您已安装的任何第三方首选项窗格的 ID。例如,我发现我的 Microsoft Natural 键盘的窗格名为 com.microsoft.microsoftkeyboard

        我还没有真正探索过这么多,但我希望存在类似的语法来识别任何可编写脚本的应用程序中的对象。

        【讨论】:

          【解决方案4】:

          我有另一个问题,但你可以看看我的问题,因为我的脚本中有一些关于你的问题的提示

          HOW TO: display a check mark, disable a menu item, refresh a menubar

          例如:

          tell application "System Preferences"
              reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
          end tell
          

          这段代码应该直接把你放在系统偏好的分辨率偏好中​​。

          然后您可以编写代码来恢复窗格的所有 UI 元素,以便您现在可以触发哪个操作。像这样的东西也应该起作用:

          tell application "System Events"
          tell application process "System Preferences"
              set frontmost to true
              delay 1
              return every UI element of front window
              return name of every UI element of front window
          end tell
          

          说完

          希望对你有帮助

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-06-27
            • 2011-03-15
            • 1970-01-01
            • 2019-11-21
            • 1970-01-01
            • 1970-01-01
            • 2014-04-20
            • 2020-09-21
            相关资源
            最近更新 更多