我最近编写了一个名为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 的第二行是响应缓慢的原因。有时脚本需要一整秒才能执行(在 SSD 上,据我所知在 HDD 上更糟)。
我不知道为什么 AppleScript 需要这么长时间才能简单地查找最前面的进程——应该是对进程管理器的唯一请求。也许您知道它为什么这么慢和/或可以告诉我一种使脚本更快的方法。
PS:当我创建我的应用程序(“存档”)时,我将 Xcode 配置为预编译我的 AppleScripts。编译的脚本是只读的。