macos - 将变量或字符串从 OS X Cocoa 应用程序传递到 Applescript

标签 macos cocoa xcode4 applescript applescript-objc

我想将一个变量传递给 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];

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

谢谢

最佳答案

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

假设您的应用程序是使用 Cocoa 应用程序模板构建的,您将需要 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 程序的其余部分来说,它们看起来就像 native 类,例如:

-- FooTest.applescript

script FOOTest
    property parent : class "NSObject"

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

end script

参见this answer有用的链接。

关于macos - 将变量或字符串从 OS X Cocoa 应用程序传递到 Applescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529800/

相关文章:

iphone - Xcode 4 上的权限被拒绝

ios - REST API iOS 开发

Xcode 4 - "Archive"呈灰色?

macos - 无法在 MacOS 上调用 `ioutil.ReadDir` 上的 `/dev/fd`

linux - 有没有办法找到shell中最后执行的命令的运行时间?

objective-c - 当网络可用时收到通知

cocoa - 是否可以将 Facebook iOS API 移植到普通的 OSX 桌面应用程序?

macos - 在用于插入和搜索正常路径的 trie 中,ascii 1-31 是否值得考虑?

macos - 在 mac 上安装 GNU GCC

macos - CIDetector跟踪ID从不存在