私は最近、グローバル ショートカットを使用して現在フォーカスされているウィンドウ内を移動するWindowTilerというユーティリティ プログラムを作成しました。AppleScript を使用してウィンドウ内を移動し、次のスクリプトを使用して、フォーカスされたウィンドウの境界を取得します。
tell application "System Events"
set appName to the first process whose frontmost is true
set appWindow to the value of attribute "AXFocusedWindow" of appName
set {w, h} to the size of appWindow
set {x, y} to the position of appWindow
set appBounds to {x, y, x + w, y + h}
end tell
{bounds:appBounds}
時間が経つにつれて、しばらく使用しないとアプリの反応が遅くなることに気付きました。時間のパフォーマンスを集中的に測定した結果、表示されている AppleScript の2 行目が応答の遅さの原因であることがわかりました。スクリプトの実行に 1 秒かかることもありました (私の知る限り、SSD では、HDD ではさらに悪化します)。
AppleScript が最前部のプロセスを検索するだけで、なぜこれほど長い時間が必要なのかはわかりません。これは、Process Manager への唯一の要求である必要があります。なぜそんなに遅いのか、スクリプトを高速化する方法を教えてください。
PS: アプリ (「アーカイブ」) を作成するときに、AppleScript をプリコンパイルするように Xcode を構成しました。コンパイルされたスクリプトは読み取り専用です。