0

ExtendScript で、ScriptUI の専門家の助けが必要な非常に奇妙なシナリオに遭遇しました。実行中にパレット ウィンドウにプログレス バーを表示する巨大な InDesign スクリプトがあります。( var w = new Window("palette", "Progress");) スクリプトが終了したら、このパレットを閉じたいのでw.close()、スクリプトの最後に を追加しました。

ただし、これはフォーカスがまだ InDesign にある場合にのみ発生します。InDesign スクリプトがバックグラウンドで別の画面で実行されている間に他のタスクに取り掛かるのが好きな人もいますが、それは問題ありませんが、InDesign に戻ると、進行状況バーのパレットが画面に表示されたままになり、100% 完了したことを示します。このパレット ウィンドウは移動できますが、隅にある小さな赤い 'x' をクリックしても閉じることはできません。このスクリプトは通常の勤務日に何十回も呼び出されるため、最終的には、1 日を通して複数のパレットが画面に表示されることになります。

Peter Kahrel の ScriptUI に関する優れたガイドを読んで、.close(). スクリプトの実行中にユーザーが別のアプリケーションに切り替えた場合に画面に表示されないように、メモリから完全に消去してパージしたいのです。これを達成する方法についてのアイデアはありますか?

ところで、サンプル コードを含めて、自分で確認できるようにしたかったのですが、ESTK から呼び出される小さなコードだけでは機能しないようです。私の 4,647 行のプロダクション スクリプトでのみ。したがって、サンプル コードを貼り付けることができません。

4

2 に答える 2

1

ウィンドウをグローバル変数にして使用することで、スクリプトの実行間でウィンドウを再利用できます。

#targetengine 'my_target_engine_name'

これは、ユーザーが煩わしいウィンドウを 1 つしか開いていないことを意味します。これは解決策ではありませんが、Trevor のポジション トリックと組み合わせると、許容できるハックになる可能性があります。

于 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 に答える