Swift / AppleScript:无法从Swift代码运行Apple脚本

时间:2017-05-17 14:08:36

标签: swift applescript macos-sierra

我尝试从Swift代码运行AppleScript命令,如下所示:

 var appleScriptCmd = "tell application \"System Events\" to make login item at end with properties {path:\"" + appPath +  "\", hidden:false, name:\"Some App\"}";

var appleScriptCmd2 = "tell application \"System Events\" to set visible of process \"Safari\" to false";

然后我尝试了两个:

let script = NSAppleScript(source: appleScriptCmd2)!;
        var errorDict : NSDictionary?
        script.executeAndReturnError(&errorDict)
        if errorDict != nil { print(errorDict!) }

或更早的方法:

Process.launchedProcess(launchPath: "/usr/bin/osascript", arguments: ["-e", appleScriptCmd])

既不起作用又同时我试过的两个命令都是使用osascript -e“some command”工具从终端程序开始工作的。

1 个答案:

答案 0 :(得分:4)

由于您的应用是沙盒化的(项目设置>功能打开App Sandbox ),您有三种选择:

  • 为要使用的应用程序添加temporary entitlements
  • 将您的脚本放在~/Library/Application Scripts/中的相应目录中,然后使用NSUserAppleScriptTask
  • 实现AppleScriptObjC桥并从ASOC框架运行AppleScript代码(还需要Objective-C桥接头文件)。

在沙盒应用中NSAppleScript拒绝使用。