我修改了一段时间前发现的一些AppleScript,以便将最前面的窗口放置在某个位置,这样屏幕/底座/菜单栏边缘的每边大约有10px的边距:
set front_app to (path to frontmost application as Unicode text)
tell application "Finder"
set _b to bounds of window of desktop
set scrn_width to item 3 of _b
set scrn_height to item 4 of _b
end tell
tell application front_app
activate
set bounds of window 1 to {10, 35, (scrnWidth - 10), (scrnHeight - 80)}
end tell
问题是我必须单独为每个窗口执行此操作。我想只运行一次并让它适用于每个应用程序的所有窗口。
我尝试修改了大约5个不同的脚本但只是出错了。这就是我所拥有的:
tell application "System Events"
tell application "Finder"
set _b to bounds of window of desktop
set scrn_width to item 3 of _b
set scrn_height to item 4 of _b
end tell
set _windows to get windows of (application processes whose visible is true)
repeat with this_window in (items of _windows)
set bounds of this_window to {10, 35, (scrn_width - 10), (scrn_height - 80)}
end repeat
end tell
任何帮助将不胜感激!
答案 0 :(得分:2)
经过一番努力,这就是我想出来的。
tell application "System Events"
set frontmostApps to every process whose frontmost is true
if ((count of frontmostApps) = 0) then return
set frontmostAppAlias to application file of (item 1 of frontmostApps)
end tell
tell application "Finder" to set desktopBounds to bounds of window of desktop
set screenWidth to item 3 of desktopBounds
set screenHeight to item 4 of desktopBounds
tell application (frontmostAppAlias as string)
set resizableAppWindows to every window whose resizable is true
repeat with i from 1 to (count of resizableAppWindows)
set appWindow to item i of resizableAppWindows
set bounds of appWindow to {10, 35, (screenWidth - 10), (screenHeight - 80)}
end repeat
end tell
我最初开始尝试在tell app "System Events"
区域内执行所有操作,但发现window
的{{1}} s似乎不允许与正常application process
相同的调用window
1}} s,即使从脚本定义他们应该。这导致tell
直接阻止了应用程序本身。
您可能希望将set bounds
包装在try
块中,因为可能会有一些应用程序具有可调整大小的窗口,该窗口具有最大大小限制集,这可能会导致错误。< / p>