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

问题描述 投票:0回答:2

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

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

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

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

javascript window adobe-indesign extendscript adobe-scriptui
2个回答
1
投票
您可以通过将脚本设为全局变量并使用]来重用脚本运行之间的窗口>

#targetengine 'my_target_engine_name'

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

0
投票
不知道您是否仍然感兴趣,但是您通常可以使用var w = new Window(“ palette”,“ My Window Title”);然后w.visible = false或w.location.y = 10000或w.size = [0,0]。不是很好的解决方案,但易于应用
© www.soinside.com 2019 - 2024. All rights reserved.