当前位置: 首页 > 知识库问答 >
问题:

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

杜志
2023-03-14

我尝试从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个答案

晋奕
2023-03-14

因为你的应用程序是沙盒(项目设置

  • 为要使用的应用程序添加临时权限
  • 将脚本放在~/Library/Application scripts/的相应目录中,并使用NSUserAppleScriptTask
  • 实现一个AppleScriptObjC桥接器,并从ASOC框架运行AppleScript代码(还需要一个Objective-C桥接头文件)

在沙盒应用程序中,NSAppleScript拒绝工作。

 类似资料:
  • 问题内容: 我有一个简单的AppleScript发送电子邮件。如何在Swift应用程序中调用它? (我无法通过Google找到答案。) 问题答案: 经过测试:可以执行以下操作(添加了任意脚本路径):

  • 问题内容: 我尝试在Swift中使用运动管理器,但是更新块内的日志从不打印。 我的Objective-C实施效果很好。有人知道为什么没有调用我的更新块吗? 问题答案: 那是因为当方法返回时,运动管理器实例被抛出了。您应该在类上创建一个属性以包含运动管理器。此外,您似乎只是在更改管理器,然后监视设备运动的变化。您应该改为设置属性。

  • 问题内容: 我快要解决这个问题了。 下面是代码: 问题答案: 您的代码是正确的,我相信您不会收到异常,如果您使用进行阅读,则不会得到任何东西。 已经说过,现在命令是100%以这种方式执行,这是因为您正在回显某些内容,需要使用来将其读回。 检查以下示例,该示例将成功创建一个名目录并打印您正在回显的内容。为了将其放入日志文件,恐怕您可以使用“>”来完成它,您可能必须使用一些编辑器命令或使用Java创建

  • 这是我第一次在java中尝试python。我试图从我的代码中执行python脚本,如下所示。 但我有以下例外 无法运行程序“python”:CreateProcess error=2,系统找不到指定的文件 我已经安装了python。我不确定为什么找不到该文件。我试着跟随这个链接,但它并没有解决我的问题。 提前谢谢。 编辑1 我尝试了“Viacheslav Vedenin”给出的示例代码,当我执行我

  • 问题内容: 我在oracle站点上找到了此代码,但是我无法使用Eclipse启动,这是说“无法启动”。我已经安装了JDK 8,但是它不起作用… 有人有解决办法吗?:p 链接到找到代码的网站:https : //docs.oracle.com/javafx/8/embed_swing/jfxpub- embed_swing.htm 问题答案: 在Java 8中,即使没有方法,您也可以直接启动子类。问

  • 我尝试在eclipse中运行下面的代码,发布在这里。 但它并没有被执行。它抛出以下错误: 注意:我还添加了来自lib/extjmetr安装文件的外部罐 代码: