2

我有一个简单的苹果脚本如下:

tell application id "com.adobe.InDesign"
    set sel to selection
end tell

这个脚本执行得很好,但是当 InDesign 显示Save Confirm Dialog时,如果我执行脚本,它会等待 2 分钟(默认苹果脚本超时)。

在此处输入图像描述
保存确认对话框

因此我指定超时如下:

tell application id "com.adobe.InDesign"
    with timeout of 0.2 seconds
        set sel to selection
    end timeout
end tell

现在,如果我在AppleScript 编辑器中执行上述脚本,每件事都符合我的预期:

在此处输入图像描述

但是当我通过NSAppleScript以编程方式执行相同的脚本时,超时没有任何影响,程序等待 2 分钟:

NSDictionary *errorDict;
NSString *script = 
    @"tell application id \"com.adobe.InDesign\"\n"
    @"  with timeout of 0.2 second\n"
    @"      set sel to selection\n"
    @"  end timeout\n"
    @"end tell\n"
    ;    
NSAppleScript* scr = [[NSAppleScript alloc] initWithSource: script];
[scr executeAndReturnError: &errorDict];

附加描述:当我的可可代码正在执行时(当我的应用程序被阻止时)如果我在AppleScript 编辑器
中执行相同的脚本,那么我的可可代码在 2 分钟超时之前被解除阻止。似乎我的应用程序在苹果脚本超时行之前被阻止 [?]如何执行与AppleScript Editor相同的苹果脚本?任何帮助,将不胜感激。

4

1 回答 1

1

构建脚本并保存为应用程序应该可以解决这个问题。它应该是相同的脚本,但只需在脚本的开头和结尾添加on run和。end run这样做的方法是当你去保存时,在保存菜单的底部,应该有一个文件格式下拉菜单。选择“应用程序”选项并保存。

我注意到这将使“默认 Applescript 超时”无效。

于 2014-10-12T23:20:09.290 回答