2

我想将一个变量传递给applescript。例如,我在 Cocoa-App(不是 cocoa-applescript 应用程序)的文本字段中键入了一些单词。然后,它将成为 Applescript 中的变量以供将来使用。我使用 Applescript 来告诉一些软件运行一些文件。

我试过How Can I Pass a String From Applescript to Objective C这里的方法。它可以使用initialwithSource在 applescript 中添加第一行。我得写一个长句。此外,如果我已经拥有 applescript,我必须将它们组合在一起。或者我必须用 Cocoa 编写所有脚本,如下所示。它毫无意义,有时效果不佳。

NSString *SlideURL = [NSString stringWithFormat:@"set mypath to \"%@\" \n tell application \"Keynote\" \n open mypath \n tell slideshow %@ \n start slideshow\n end tell \n end tell\n",temp,temp];

// here is meaningless right
// temp is the variable I want to pass to applescript 

NSDictionary *errorInfo = nil;
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:SlideURL];
[script executeAndReturnError:&errorInfo];
[script release];

你们中有人知道更好的方法吗?

谢谢

4

1 回答 1

2

字符串混搭是邪恶的。只需使用 AppleScriptObjC;它没有魔法或复杂性。

假设您的应用程序是使用 Cocoa Application 模板构建的,您需要 1. 在项目中包含 AppleScriptObjC 框架,以及 2. 修改其 main.m 以匹配 ASOC 模板的 main.m,其中包含两行额外的行:

#import <Cocoa/Cocoa.h>

#import <AppleScriptObjC/AppleScriptObjC.h>

int main(int argc, char *argv[])
{
    [[NSBundle mainBundle] loadAppleScriptObjectiveCScripts];
    return NSApplicationMain(argc, (const char **)argv);
}

完成此操作后,您可以将 ASOC 样式的脚本对象文件添加到您的项目中,它们看起来就像您的 ObjC 程序的其余部分的本机类,例如:

-- FooTest.applescript

script FOOTest
    property parent : class "NSObject"

    on doSomething_(sender)
        display dialog "Hello World"
    end 

end script

请参阅此答案以获取有用的链接。

于 2013-05-14T18:17:25.070 回答