Ras*_*yrk 8 applescript copy-paste sandbox objective-c
我正在尝试复制/粘贴我的最后一个活动应用程序,这是我的代码:
NSString *appleScriptSource = [NSString stringWithFormat:@"\ntell application \"%@\" to activate\ntell application \"System Events\" to tell process \"%@\"\nkeystroke \"v\" using command down\nend tell", [lastApp localizedName], [lastApp localizedName]];
NSDictionary *error;
NSAppleScript *aScript = [[NSAppleScript alloc] initWithSource:appleScriptSource];
NSAppleEventDescriptor *aDescriptor = [aScript executeAndReturnError:&error];
Run Code Online (Sandbox Code Playgroud)
问题是在某些计算机上它工作正常,但在其他计算机上它失败了.我从executeAndReturnError返回的错误输出的错误是:
2012-06-13 17:43:19.875 Mini Translator[1206:303] (null) (error: {
NSAppleScriptErrorBriefMessage = "Expected end of line but found \U201c\"\U201d.";
NSAppleScriptErrorMessage = "Expected end of line but found \U201c\"\U201d.";
NSAppleScriptErrorNumber = "-2741";
NSAppleScriptErrorRange = "NSRange: {95, 1}";
})
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚它意味着什么或为什么会发生.
我们尝试将生成的Apple脚本代码复制到Apple Script编辑器中,这里工作得很好.
我的应用程序是沙箱 - 我为我想要支持的应用程序添加了密钥"com.apple.security.temporary-exception.apple-events"的软件包标识符.
有什么建议?
我猜测\ u201c和\ u201d是红色鲱鱼,只是在Apple脚本生成的错误消息中围绕双引号表示智能引号,而您的问题在于您要格式化到脚本中的最后一个应用程序的本地化名称.我不确定为什么你会在一台机器上看到这个而不是另一台机器.
例如,如果名称为"Some"App',那么双引号最终将不匹配,因为它最终将注入双引号字符串的中间.您可能想要尝试用名称替换名称中的任何双引号"'将逃脱他们.
例如
NSString *esc = [[lastApp localizedName] stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];Run Code Online (Sandbox Code Playgroud)