akm*_*min 6 macos applescript swift
我正在制作一个简单的菜单栏应用程序来执行一些操作,例如在 Mojave 中切换暗模式
为它编写 AppleScript 很好,并且在直接运行脚本时它可以 100% 工作。为了将它实现到菜单栏应用程序中,我尝试在线搜索,我找到的唯一答案是在此链接中:您能否从 Swift 应用程序执行 Applescript 脚本
但是,当我尝试第一个解决方案时,控制台中出现错误消息:
script: /Users/username/Documents/myscript.scpt: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
我的代码如下所示:
let proc = Process()
proc.launchPath = "/usr/bin/script"
proc.arguments = ["/Users/username/Documents/myscript.scpt"]
proc.launch()
Run Code Online (Sandbox Code Playgroud)
我尝试了另一种解决方案,这次使用的是 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)")
}
}
Run Code Online (Sandbox Code Playgroud)
但是这次我收到一条错误消息:
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}";
})
Run Code Online (Sandbox Code Playgroud)
但是,如果我将脚本更改为更简单的内容,例如“显示通知\”测试\“”,则第二个解决方案可以完美运行。
这意味着第二个解决方案可以正常运行 AppleScript,但它似乎无法调用系统事件。我该如何解决?
如果应用程序被沙盒化,则会发生此错误。
您有两个选择:
com.apple.security.temporary-exception.apple-events权限System EventsApplication Scripts应用程序的文件夹中并从那里运行它NSUserAppleScriptTask| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |