web-dev-qa-db-ja.com

Applescript-ウィンドウを前面に表示

複数のウィンドウを同時に開いたアプリケーションがあります。特定のウィンドウを前面に表示したい(タイトルはわかっている)。

現在、このタスクを実行するためにキーの組み合わせを使用していますが、このアプローチでいくつかの問題が発生しているため、別の方法を試してみたいと思います。

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

アプリケーションがスクリプト可能で、ウィンドウのインデックスを設定できる場合は、次の操作を実行できます( 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
8
Mitchell Model

これは、特定のウィンドウ(X11を使用するアプリケーションなど)を除いて、"AXRaise"アクションを使用することで可能になります。

これを試して。

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
20
jackjr300

システムイベントがプロセスのフロントウィンドウを変更することはないと思います。もちろん、必要なウィンドウが上になるまでフロントウィンドウを閉じることができます。おそらくウィンドウを閉じたくないので、それは実際には解決策ではありません。実際、これを達成できる唯一の方法は、アプリケーション自体がAppleスクリプト可能であり、これを実行できる場合です。

0
regulus6633