如何在Applescript中移动对话框窗口?

时间:2014-11-25 01:22:41

标签: applescript adobe-indesign

我被告知,从技术上讲,您无法在AppleScript中移动对话框。令人惊讶的是,以下代码有效。

我正在为InDesign运行一个创建对话框的脚本。打开新的AppleScript编辑器窗口并运行此代码将移动对话框:

tell application "System Events"
    tell application process "Adobe InDesign CS6"
        set position of window 1 to {1000, 400}
    end tell
end tell

问题是:我无法找到将此代码直接合并到原始脚本中的方法 - 无论我尝试什么或将其插入代码中,它都无法正常工作。我必须从AppleScript编辑器

运行它

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

对话框通常在主机应用程序中阻塞。你当然可以告诉系统事件移动一个窗口,但Adobe InDesign本身正在忙着抛出一个阻塞对话框,所以它不能移动它自己的对话框。

如果你想变得聪明,你可以在正确的时间分叉一个过程,并通过神奇的正确延迟来移动对话框。这就像是

do shell script "osascript -e 'delay 4' -e " & (quoted form of "tell application \"System Events\" to tell application process \"Adobe InDesign CS6\" to set position of window 1 to {1000, 400}") & " > /dev/null 2>&1 &"

根据需要自定义延迟。这将是你必须弄清楚的神奇价值。根据您的需要,您可以在脚本继续之前进行测试以查看对话框是否已消失。

最后的位> /dev/null 2>&1 &告诉bash将stdout重定向到/dev/null(垃圾邮件)并将stderr重定向到stdout,然后告诉整个命令在后台运行。如果没有这整个块,此语句将阻止AppleScript继续执行,直到shell脚本完成执行。