销毁ScriptUI调色板窗口(以及更多)

时间:2014-02-05 20:29:37

标签: javascript window destroy adobe-indesign extendscript

在ExtendScript中,我遇到了一个非常奇怪的场景,我需要一些来自ScriptUI大师的帮助。我有一个巨大的InDesign脚本,在执行过程中,在调色板窗口中显示一个进度条。 (var w = new Window("palette", "Progress");)我希望在脚本完成时关闭此调色板,因此我在脚本末尾添加了w.close()

但是,仅当焦点仍在InDesign中时才会出现这种情况。当InDesign脚本在后台的另一个屏幕上运行时,我们的一些人喜欢处理其他任务,这很好,但是当他们返回到InDesign时,该进度条调色板仍然在屏幕上,显示100%完成。此调色板窗口可以移动,但不能关闭,即使单击角落中的小红色'x'也是如此。这最终导致多个调色板全天停留在屏幕上,因为这个脚本在正常工作日被称为几十次。

阅读Peter Kahrel的ScriptUI精彩指南,我了解到即使用.close()关闭,所有调色板都会留在内存中。我希望它们完全从内存中清除并清除,因此如果用户在脚本运行时切换到另一个应用程序,它们不会停留在屏幕上。关于如何实现这一目标的任何想法?

顺便说一句,我想要包含一些示例代码,以便您可以自己查看,但是当它只是一些使用ESTK调用的小代码时似乎不起作用;只在我的4,647行制作脚本中。因此,我无法粘贴任何示例代码。

2 个答案:

答案 0 :(得分:1)

您可以在脚本运行之间重复使用窗口,方法是将其作为全局变量并使用

#targetengine 'my_target_engine_name'

这意味着用户只有一个恼人的窗口打开。这不是一个解决方案,但结合Trevor的位置技巧,它可能是一个可以接受的黑客。

答案 1 :(得分:0)

不知道你是否仍然感兴趣,但你通常可以使用var w = new Window(“palette”,“My Window Title”);然后w.visible = false或w.location.y = 10000或w.size = [0,0]。不是很好的解决方案,但易于应用