我正在寻找一种在不让Mac休眠的情况下以编程方式锁定用户屏幕的方法。现在,我可以用kAESleep事件触发锁屏,但这更像是一次黑客攻击,它让电脑进入睡眠状态。有可能吗?感谢
将屏幕保护程序配置为在启动后立即需要密码,然后以编程方式启动屏幕保护程序。我把它编程为键盘快捷键,以帮助我的Windows用户过渡到使用真正的计算机;)。
下面的AppleScript将为您完成此操作。请注意,由于OSX的安全限制,AppleScript在执行UI函数之前会暂停五秒钟,因此需要一小段时间才能正常工作。我正在使用Quicksilver将其绑定到热键。
(作为奖励,这个脚本还将暂停你的几个音乐播放器。请随意删除这些行。)
#
# Tell our noisy programs to shut up
#
tell application "Spotify"
pause
end tell
tell application "iTunes"
pause
end tell
#
# Lock up the screen without going to sleep. Needs that Keychain Access
# is set up properly.
#
tell application "System Events" to tell process "SystemUIServer" to click (first menu item of menu 1 of ((click (first menu bar item whose description is "Keychain menu extra")) of menu bar 1) whose title is "Lock Screen")
您需要设置钥匙链访问,以便在屏幕上显示锁定图标。
我使用以下成功地锁定了python中macOS上的屏幕
import ctypes, ctypes.util
login = ctypes.CDLL( '/System/Library/PrivateFrameworks/login.framework/login' )
login.SACLockScreenImmediate()
我是通过互联网上稀少的信息和反复试验发现这一点的。据我所知,苹果根本没有记录SACLockScreenImmediate()
函数。
如果有人能找到";登录框架";图书馆,请把它放在评论中:)
来源
用于BusKill应用程序,当USB Dead Man Switch中的磁性分离连接断开时,该应用程序会锁定屏幕:
- https://github.com/BusKill/buskill-app/tree/master/src/packages/buskill