applescript 可稳定操作应用主菜单栏(如 finder 的「前往」→「下载文件夹」),但无法直接点击系统状态栏图标(如 wi-fi);需手动启用辅助功能权限,或优先使用 do shell script 等原生命令替代 gui 操作。
applescript 可以通过 gui scripting(辅助功能)操作菜单栏项,但需注意:macos 限制严格,必须手动启用辅助功能权限,且菜单栏图标(如右上角的 wi-fi、电池、time machine 等)本身不是标准 cocoa 菜单,而是 nsstatusbaritem — 它们不直接暴露在 accessibility api 中,因此不能像“app 菜单栏”(如 finder 的「文件」「编辑」)那样用 menu bar item 直接点击。实际可行的两类操作如下:
✅ 操作「应用主菜单栏」(如 Safari、Mail 的顶部菜单)
这是 AppleScript 最稳定支持的场景。每个前台应用的菜单栏结构可通过 System Events 访问。
- 确保目标应用已运行且处于前台(或指定其进程名)
- 使用
menu bar item→menu bar menu→menu item路径逐级定位 - 菜单名必须与界面显示完全一致(含空格、标点),区分大小写
示例:在 Finder 中执行「前往」→「下载文件夹」
tell application "Finder"
activate
end tell
tell application "System Events"
tell process "Finder"
click menu bar item "前往" of menu bar 1
click menu item "下载文件夹" of menu 1 of menu bar item "前往" of menu bar 1
end tell
end tell
✅ 触发「菜单栏状态图标」的常见交互(有限但实用)
多数状态栏图标(如 Bartender、Moom、iStat Menus)支持快捷键或全局热键;若无,可尝试以下方法:
-
模拟点击屏幕坐标:用
click at {x, y}(需提前获取图标位置,不稳定,受分辨率/多屏/折叠影响) -
发送快捷键:若该图标绑定热键(如 Ctrl+Opt+Cmd+T 打开某工具),用
keystroke "t" using {control down, option down, command down} - 调用其 AppleScript 支持接口:部分专业工具(如 Keyboard Maestro、BetterTouchTool)提供 AS 可调用命令,查其文档启用
⚠️ 注意:直接用 menu bar item "Wi-Fi" 尝试操作系统自带图标会失败 — macOS 不将其注册为可访问的菜单栏项。
? 必须配置的系统权限
GUI Scripting 在 macOS 10.14+ 默认禁用,需手动授权:
- 前往「系统设置」→「隐私与安全性」→「辅助功能」
- 点击左下角锁图标解锁
- 勾选「Script Editor」和你最终打包/运行脚本的 App(如 Automator 工作流、或导出的 App)
- 首次运行脚本时,系统可能弹窗二次确认,点“好”
? 替代建议:优先用原生方式代替 GUI 点击
对系统功能,AppleScript 往往有更可靠接口:
- 切换 Wi-Fi:
do shell script "networksetup -setairportpower airport on" - 调节音量:
set volume output volume 50 - 控制蓝牙:
do shell script "blueutil --power 1"(需先brew install blueutil) - 打开「聚焦」:
key code 49 using {command down}(Command + Space)
这些方法无需辅助功能权限、不依赖界面状态、执行更快也更稳定。











