AppleScript的 - 把窗口前台(Applescript - Bring window to

2019-07-03 11:51发布

我有几个窗口同时打开的应用程序。 我想提出一个特定的窗口前台(我知道它的标题)。

目前我使用的组合键来实现这一任务,但我想尝试不同的东西,因为我遇到了一些问题,这种做法。

tell application "System Events"
    set frontmost of process "appIT" to true
    keystroke "1" using command down
    delay 0.2
end tell

Answer 1:

如果您的应用程序编写脚本并允许设置一个窗口的指数,你可以做以下的(基于一个答案我如何使用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


Answer 2:

这通过使用能够"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


Answer 3:

我不认为系统事件可以改变一个过程的前窗。 当然,直到你想要的窗口在顶部,你可以关闭前窗。 这不是真的,虽然你可能不希望关闭窗口的解决方案。 真的不过唯一的办法,你可以做到这一点是如果应用程序本身是苹果编写脚本,让你做到这一点。



文章来源: Applescript - Bring window to foreground