首页 文章

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

提问于
浏览
0

在ExtendScript中,我有一个巨大的InDesign脚本,在执行过程中,它会在调色板窗口中显示一个进度条 . ( var w = new Window("palette", "Progress"); )我希望在脚本完成时关闭此调色板,因此我在脚本末尾添加了 w.close() .

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

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

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

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] . 不是很好的解决方案,但易于应用

相关问题