我有几个窗口同时打开的应用程序。 我想提出一个特定的窗口前台(我知道它的标题)。
目前我使用的组合键来实现这一任务,但我想尝试不同的东西,因为我遇到了一些问题,这种做法。
tell application "System Events"
set frontmost of process "appIT" to true
keystroke "1" using command down
delay 0.2
end tell
我有几个窗口同时打开的应用程序。 我想提出一个特定的窗口前台(我知道它的标题)。
目前我使用的组合键来实现这一任务,但我想尝试不同的东西,因为我遇到了一些问题,这种做法。
tell application "System Events"
set frontmost of process "appIT" to true
keystroke "1" using command down
delay 0.2
end tell
如果您的应用程序编写脚本并允许设置一个窗口的指数,你可以做以下的(基于一个答案我如何使用AppleScript(优雅的)一个Safari窗口活跃? )
to raiseWindow of theApplicationName for theName
tell the application named theApplicationName
activate
set theWindow to the first item of ¬
(get the windows whose name is theName)
if index of theWindow is not 1 then
set index to 1
set visible to false
set visible to true
end if
end tell
end raiseWindow
知名度的触发是必要的处理与交换的应用程序发生了一些怪事。 如果你不切换的知名度,当您切换离开并返回给应用程序窗口将不会是第一个。 不幸的是,这种切换缩小窗口到码头,然后恢复它,一个非常引人注目的UI中断。
下面是我发现对付古怪另一种方式:
to raiseWindow2 of theApplicationName for theName
tell the application named theApplicationName
activate
set theWindow to the first item of ¬
(get the windows whose name is theName)
if the index of theWindow is not 1 then
set the index of theWindow to 2
tell application "System Events" to ¬
tell application process theApplicationName to ¬
keystroke "`" using command down
end if
end tell
end raiseWindow2
这通过使用能够"AXRaise"
动作,除了在某些窗口(即使用X11例如应用程序)。
试试这个。
set theTitle to "some title"
tell application "System Events"
tell process "appIT"
set frontmost to true
perform action "AXRaise" of (windows whose title is theTitle)
end tell
end tell
我不认为系统事件可以改变一个过程的前窗。 当然,直到你想要的窗口在顶部,你可以关闭前窗。 这不是真的,虽然你可能不希望关闭窗口的解决方案。 真的不过唯一的办法,你可以做到这一点是如果应用程序本身是苹果编写脚本,让你做到这一点。