用 AppleScript 编写 macOS 系统锁屏自动触发脚本

作者:袖梨 2026-07-03
推荐使用 do shell script "CGSession -suspend" 实现 macOS 原生锁屏,无需第三方工具、不弹窗、兼容 Ventura 及 Sonoma;需提前启用“锁屏时要求输入密码”,替代方案为 AppleScript 模拟 ⌘+Ctrl+Q 快捷键并授权辅助功能。

macos 本身不提供直接通过 applescript 锁屏的原生命令(如 pmset display sleep 只能关闭显示器,不等同于锁屏),但可通过调用系统私有框架或模拟用户操作实现可靠锁屏。以下是最实用、无需第三方工具、兼容 macos ventura 及更新版本(包括 sonoma)的方法。

使用 `CGSession` 命令行工具(推荐)

macOS 内置的 CGSession 是苹果官方用于会话控制的工具,-suspend 参数可立即触发锁屏并要求输入密码(等效于 ⌘ + Ctrl + Q 或选择“访达 → 系统设置 → 锁屏”)。

AppleScript 脚本如下:

do shell script "CGSession -suspend"

✅ 优点:无需权限授权、不弹窗、不依赖 GUI 自动化、锁屏后屏幕立即变暗并显示登录界面。
⚠️ 注意:需确保当前用户已启用“进入睡眠或开始屏幕保护程序时,要求输入密码”(在“系统设置 → 锁屏”中开启)。

替代方案:通过 AppleScript 模拟快捷键(备用)

若因系统策略限制无法执行 CGSession(极少见),可用 GUI 脚本触发标准锁屏快捷键 ⌘ + Ctrl + Q:

tell application "System Events"    key code 12 using {command down, control down}end tell

⚠️ 使用前需手动开启辅助功能权限:
• 打开“系统设置 → 隐私与安全性 → 辅助功能”
• 点击 + 添加 Script Editor(或你运行脚本的 App,如 Automator、FastScripts)
• 第一次运行可能提示授权,允许即可。

封装为可一键运行的 .scpt 文件

将上述任一代码保存为 LockScreen.scpt 后,可:

  • 双击运行(需已授予权限)
  • 绑定到快捷键(配合工具如 FastScripts、Karabiner-Elements)
  • 加入自动化流程(如 iCal 日历提醒后自动锁屏、离开时触发)
  • 终端中执行:osascript /path/to/LockScreen.scpt

常见问题处理

脚本无反应? 检查是否启用了“锁定屏幕时需要密码”,并确认辅助功能权限已授予对应应用。
只黑屏不锁屏? 这是仅关闭显示器的表现,说明误用了 pmset displaysleepnow —— 请改用 CGSession -suspend
AppleScript 报错 “CGSession not found”? 不会,该命令自 macOS 10.3 起一直内置,路径为 /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIIT.framework/Versions/A/Resources/CGSessiondo shell script 可直接调用。

相关文章

精彩推荐