我正在制作一个简单的菜单栏应用程序,可以执行一些操作,例如在Mojave中切换深色模式。
为此,编写一个AppleScript是可行的,并且在直接运行脚本时可以100%正常工作。为了将其实现到菜单栏应用程序中,我尝试在网上搜索,但唯一找到的答案是在这个链接中:Can you execute an Applescript script from a Swift Application 然而,当我尝试第一个解决方案时,在控制台中出现了错误提示:
然而,这次我收到了一个错误,内容是:
为此,编写一个AppleScript是可行的,并且在直接运行脚本时可以100%正常工作。为了将其实现到菜单栏应用程序中,我尝试在网上搜索,但唯一找到的答案是在这个链接中:Can you execute an Applescript script from a Swift Application 然而,当我尝试第一个解决方案时,在控制台中出现了错误提示:
script: /Users/username/Documents/myscript.scpt: Operation not permitted
我的代码是这样的:
let proc = Process()
proc.launchPath = "/usr/bin/script"
proc.arguments = ["/Users/username/Documents/myscript.scpt"]
proc.launch()
我尝试了另一种解决方案,这次使用了NSAppleScript:
let myAppleScript = "tell application \"System Events\" \ntell appearance preferences to set dark mode to not dark mode \nend tell"
var error: NSDictionary?
if let scriptObject = NSAppleScript(source: myAppleScript) {
if let output: NSAppleEventDescriptor = scriptObject.executeAndReturnError(&error) {
print(output.stringValue)
} else if (error != nil) {
print("error: \(error)")
}
}
然而,这次我收到了一个错误,内容是:
error: Optional({
NSAppleScriptErrorAppName = "System Events";
NSAppleScriptErrorBriefMessage = "Application isn\U2019t running.";
NSAppleScriptErrorMessage = "System Events got an error: Application isn\U2019t running.";
NSAppleScriptErrorNumber = "-600";
NSAppleScriptErrorRange = "NSRange: {86, 9}";
})
但是,如果我将脚本更改为更简单的内容(例如“显示通知”测试”),第二个解决方案就可以完美运行。
这意味着第二个解决方案可以正常运行AppleScript,但似乎无法调用系统事件。 我该如何解决这个问题?