7

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

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

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

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

4

4 回答 4

11

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

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

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

它有称为“窗格”的对象

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


S:Suite C:Class P:Property (圆圈内的“C”代表Command

于 2012-07-28T11:19:39.800 回答
7

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

1) 在 AppleScript Editor 的 File 菜单下,选择 "Open Dictionary..."。您可以从那里选择一个应用程序,它将显示其字典。

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

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

祝你好运。

于 2012-07-28T11:18:05.170 回答
0

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

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

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

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

于 2013-04-29T08:56:38.220 回答
0

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

如何:显示复选标记、禁用菜单项、刷新菜单栏

例如:

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

结束告诉

希望能帮助到你

于 2018-03-23T15:05:07.000 回答