cocoa - NSAppleScript 在沙盒应用程序中执行失败

标签 cocoa applescript sandbox

我有一个针对 Mac OS X 10.7 的沙盒应用程序,并且想要执行此 AppleScript:

告诉应用程序“Safari”添加阅读列表项“http://www.apple.com”

我已在 AppleScript 编辑器中测试了此脚本,它执行正确。

在 Cocoa 应用程序中,我设置了适当的临时权利,并使用以下脚本对其进行了测试,该脚本可以正确执行:

告诉应用程序“Safari”激活

但是当我在 Cocoa 应用程序中插入第一个脚本时,出现错误。这是我正在使用的代码

    NSString *url = [post.url absoluteString];
    NSString *source = [NSString stringWithFormat:@"tell application \"Safari\" to add reading list item \"%@\"", url];

    NSDictionary *errorDictionary;
    NSAppleScript *script = [[NSAppleScript alloc] initWithSource:source];

    if ( ![script executeAndReturnError:&errorDictionary] ) {
        NSLog(@"Error while saving to Safari Reading List: %@", errorDictionary);
    }

错误是

2012-09-20 10:30:29.370 Cream[2752:303] Error while saving to Safari Reading List: {
NSAppleScriptErrorBriefMessage = "A identifier can\U2019t go after this identifier.";
NSAppleScriptErrorMessage = "A identifier can\U2019t go after this identifier.";
NSAppleScriptErrorNumber = "-2740";
NSAppleScriptErrorRange = "NSRange: {29, 11}";
}

该错误似乎涉及术语“阅读”。就好像它还没有加载 Safari 脚本字典,并且不理解“阅读列表项”的含义。

如果我在禁用沙箱的情况下运行应用程序,它可以使用完全相同的脚本完美运行。

有人知道会发生什么吗?我需要在沙箱的某个地方再打一个洞吗?

最佳答案

沙盒应用程序无法将 AppleEvents 发送到其他应用程序,因此它们无法使用 AppleScript 与其他应用程序进行通信。

关于cocoa - NSAppleScript 在沙盒应用程序中执行失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510391/

相关文章:

Iphone/IOS - 调试应用程序崩溃

objective-c - 确定 Cocoa 中沙箱消息的目的地

objective-c - 从 osx 中的代码更改键盘布局

objective-c - NSURL 与 http ://works fine but with ftp://not

cocoa - 正在寻找 3d 引擎。 (麦克、 cocoa )

objective-c - AppleScript 编辑器中显示的 AppleScript 类名

cocoa - 是否可以知道通过 AppleScript 事件收到的 GIRL 调用的引荐来源网址?

iphone - ViewController 从生命周期开始到结束(不使用 NIB 和使用 NIB)的生命周期函数的完整列表?

ios - 哪些 applescript 命令可以发送到 iOS 模拟器?

r - 如何使用 R 访问隐藏的系统文件?