0

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

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

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

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

4

2 回答 2

1

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

#targetengine 'my_target_engine_name'

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

于 2014-08-29T21:33:10.703 回答
0

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

于 2014-05-28T22:16:48.853 回答