我尝试像这样从 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"工具的终端程序中工作。
最佳答案
由于您的应用是沙盒化的(项目设置 > 功能打开应用沙盒),您有以下三种选择:
~/Library/Application Scripts/ 中的适当目录中并使用NSUserAppleScriptTask .在沙盒应用程序中 NSAppleScript 拒绝工作。
关于 swift/AppleScript : Cannot run apple script from Swift code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44027241/
有没有办法在AppleScript中实现Ruby风格的字符串插值?我需要一种灵活的方式来创建字符串模式。ruby:fn="john"=>"john"ln="doe"=>"doe"addresses=[]=>[]addresses["jdoe@company.com"]addresses["jdoe@company.com","john.doe@company.com"]苹果脚本:setfnto"john"setlnto"doe"settheAddressesto{}#jdoe@company.comcopy[somethinghere]&"@company.com"totheendof
我正在尝试使用Javascript而非AppleScript来构建Mail.app规则(在OSXYosemite上),但我仍然停留在基础知识上。我在AppleScript中看到这段代码:usingtermsfromapplication"Mail"onperformmailactionwithmessagestheMessagesforruletheRule#actualcodehereendperformmailactionwithmessagesendusingtermsfrom但我不清楚这如何转化为JavaScript。我是否定义了一个函数?设置回调?我不清楚。我看到有perfo
我想弄清楚为什么在Safari位置栏中键入相同的javascript代码时我的Applescript什么都不做。转到搜索结果页面,例如:http://www.google.com/search?q=test.对于正确的行为,将其输入地址栏并按回车键:javascript:document.getElementsByClassName('vspib')[0].click();您会看到它为第一个搜索结果选择放大镜。这就是我想通过javascript实现的。所以我输入了以下内容:tellapplication"Safari"activatedoJavaScript"document.getE
当我将time.Now()编码到JSON对象时,它给出的结果为"2009-11-10T23:00:00Z"但打印时间。现在给出2009-11-1023:00:00+0000UTC。他们为什么不同。什么是T和Z。另外,如何根据this将其转换为swiftNSDate对象?表? 最佳答案 这些值的含义无关紧要,它们是该格式(ISO8601)的一部分。有几种方法可以解决这个问题。一种是为时间或您的结构定义自定义MarshalJSON()方法并使用它来格式化日期,另一种是首先在您的结构中将其表示为字符串,以便当默认实现执行你得到你正在寻找的
在C/C++/Java/Go中,我们使用,来分隔参数:(aint,bint)在ObjectiveC中,我们使用:来表示参数::(int)a:(int)b在Swift中,我们必须同时使用:和,:(a:int,b:int)是否需要冗余? 最佳答案 Swift可能有外部和内部参数名称:(externalinternal:Int)如果没有独特的分隔符,会产生很多歧义。 关于objective-c-为什么Swift函数定义语法是多余的?,我们在StackOverflow上找到一个类似的问题:
我的Swift应用程序与用Go编写的服务器通信。我希望使用Zlib压缩传输的数据,但压缩结果似乎与Swift和Go不同。这是Go版本:sourceString:="A-t-ellebesoind'autrespreuves?Acceptez-lapourleplaisir.J'aitantfaitquedelacueillir,Etc'estpresqueunefleur-des-veuves."//Compressionvarbbytes.Bufferwriter:=zlib.NewWriter(&b)writer.Write([]byte(sourceString))writer.
我正在使用rsaEncryptionOAEPSHA256AESGCM在iOS上使用SecKeyCreateEncryptedData加密一些数据,然后在golang后端解密相同的数据。我正在使用3072位rsa公钥来加密对称key。当我从iOS获取数据到后端时,我能够成功解密对称key,但gcm标签验证失败。我使用的是与iOS相同的16字节IV,但不知道iOS在加密时是否使用任何aad(附加身份验证数据)。有谁知道rsaEncryptionOAEPSHA256AESGCMforiOS是否使用了一些aad?这适用于iOS10+。我已经尝试过使用nil、空的16字节数组、aeskey本身、
我尝试创建Applescript以从.xfdf中提取值XFDFTextNotClearIncorrectdimensionIncorrectTextAppleScriptsettheXMLFileto((choosefile)asstring)tellapplication"SystemEvents"tellXMLelement"xfdf"ofcontentsofXMLfiletheXMLFilesettypeTextto(valueofXMLelement"p")setnameTextto(valueofXMLelement"p")endtellendtell当我运行脚本时出现此错误
我使用swiftyJSON从apiurl消费OData。这里的apiurl与VPN连接。并且apiurl看起来像http://192.xxx.xx.xx:8000/sap/opu/odata/sap/Z_SRV/PRListSetSet?$format=json当我在模拟器中运行时,我可以从odataapiurl获取数据,但是在设备中运行时,没有从odataapiurl接收到数据。由于没有vpn连接到移动设备。我如何以编程方式对我的VPN进行硬编码以在移动设备中接收数据?这是我如何从ODataapiurl获取数据:typealiasServiceResponse=(JSON,Error
我正在开发一个涉及一些XML解析的自定义框架,使用Kanna框架。每当我尝试将我的框架导入playground时,playground就会崩溃并出现以下错误:Playgroundexecutionfailed:expressionfailedtoparse,unknownerror*thread#1:tid=0x4e9448,0x00000001074bf360com.apple.dt.Xcode.PlaygroundStub-macosx`executePlayground,queue='com.apple.main-thread',stopreason=breakpoint1.1*