首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Swift编程使Mac进入睡眠状态

如何用Swift编程使Mac进入睡眠状态
EN

Stack Overflow用户
提问于 2020-02-02 20:29:46
回答 1查看 659关注 0票数 0

我正在编写一个程序,使我的MacBook专业去睡觉时,应用程序打开,但我似乎不知道它。我不知道这是否与电源管理有关,但据我所知,这与IOKit.pwr_mgt有关。您的帮助将不胜感激!下面的代码只是如何启用睡眠模式,而不是将计算机置于睡眠模式。我还找到了applicationDidFinishLaunching函数,所以代码就在这个函数中。

代码语言:javascript
复制
var assertionID: IOPMAssertionID = 0
var success = IOPMAssertionRelease(assertionID)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-03 00:48:35

这与电力管理无关。你实际上需要用你的应用程序运行一个脚本。

要做到这一点,最简单的方法是首先禁用App功能。

接下来,转到应用程序info.plist,添加NSAppleEventsUsageDescription键和描述,类似于"This app needs your permission to put the display to sleep."

现在,您只需要执行一个Apple脚本,让应用程序系统事件休眠即可。"tell application \"System Events\" to sleep"

创建一个方法来执行该脚本:

代码语言:javascript
复制
func startScreenSleep() {
    let script = "tell application \"System Events\" to sleep"
    guard let appleScript = NSAppleScript(source: script) else { return }
    var error: NSDictionary?
    appleScript.executeAndReturnError(&error)
    if let error = error {
        print(error[NSAppleScript.errorAppName] as! String)
        print(error[NSAppleScript.errorBriefMessage] as! String)
        print(error[NSAppleScript.errorMessage] as! String)
        print(error[NSAppleScript.errorNumber] as! NSNumber)
        print(error[NSAppleScript.errorRange] as! NSRange)
    }
}

并从ViewController的viewDidLoad方法调用它:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
    startScreenSleep()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60030291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档