我被告知,从技术上讲,您无法在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编辑器
运行它有什么想法吗?
答案 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脚本完成执行。