如何在Objective-C中将参数传递给AppleScripts?

时间:2012-02-23 16:14:52

标签: objective-c applescript

我已将AppleScript嵌入到我的Xcode项目中。脚本 processId.scpt 需要一个参数。如何在Objective-C中执行脚本时添加它?

NSString *scriptPath = [[NSBundle mainBundle] pathForResource:@"processId" ofType:@"scpt"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:scriptPath]) {
    NSURL *scriptUrl = [[NSURL alloc] initWithString:scriptPath];

    NSDictionary *error = nil;
    NSAppleScript *script = [[NSAppleScript alloc] initWithContentsOfURL:scriptUrl error:&error];
    NSAppleEventDescriptor *result = [script executeAndReturnError:nil];

    NSData *data = [result data];
    int pid = 0;
    [data getBytes:&pid length:[data length]];

    NSLog(@"Result: %d. %@. %@.", pid, [result stringValue], [error description]);        
}

2 个答案:

答案 0 :(得分:0)

我不确定你是如何在脚本中使用参数的,但请查看this post以获取有关创建AEMEvent,为其附加参数,然后将其发送到脚本。

答案 1 :(得分:0)

根据您的基本SDK设置(它必须至少为10.6),另一个选项是将脚本添加为AppleScriptObjC类并调用处理程序/方法,如普通的Objective-C。有关说明(和示例项目),请参阅this page,有关命名约定,请参阅ASObjC Release Notes