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

如何在Applescript中移动对话框窗口?,applescript,adobe-indesign,Applescript,Adobe Indesign,有人告诉我,从技术上讲,你不能在AppleScript中移动对话框。令人惊讶的是,下面的代码可以工作 我正在运行一个InDesign脚本,它创建了一个对话框。打开新的AppleScript编辑器窗口并运行此代码将移动对话框: tell application "System Events" tell application process "Adobe InDesign CS6" set position of window 1 to {1000, 400} en

有人告诉我,从技术上讲,你不能在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编辑器运行它


有什么想法吗?

对话框通常在主机应用程序中被阻塞。您当然可以告诉系统事件移动窗口,但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脚本完成执行。

对话框通常在宿主应用程序中被阻止。您当然可以告诉系统事件移动窗口,但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脚本完成执行。

对话框通常在宿主应用程序中被阻止。您当然可以告诉系统事件移动窗口,但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脚本完成执行。

对话框通常在宿主应用程序中被阻止。您当然可以告诉系统事件移动窗口,但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脚本完成执行。

Welp,这是可行的,但即使我将延迟设置为零,延迟仍然存在。不过,这可能是最好的。谢谢嗯,这是有效的,但是延迟是存在的,即使我把延迟设置为零。不过,这可能是最好的。谢谢嗯,这是有效的,但是延迟是存在的,即使我把延迟设置为零。不过,这可能是最好的。谢谢嗯,这是有效的,但是延迟是存在的,即使我把延迟设置为零。不过,这可能是最好的。谢谢