複数のウィンドウを同時に開いたアプリケーションがあります。特定のウィンドウを前面に表示したい(タイトルはわかっている)。
現在、このタスクを実行するためにキーの組み合わせを使用していますが、このアプローチでいくつかの問題が発生しているため、別の方法を試してみたいと思います。
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
これは、特定のウィンドウ(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
システムイベントがプロセスのフロントウィンドウを変更することはないと思います。もちろん、必要なウィンドウが上になるまでフロントウィンドウを閉じることができます。おそらくウィンドウを閉じたくないので、それは実際には解決策ではありません。実際、これを達成できる唯一の方法は、アプリケーション自体がAppleスクリプト可能であり、これを実行できる場合です。