アクティブ化して他のウィンドウを前面に表示せずに、特定のウィンドウをapplescriptでフォーカスするにはどうすればよいですか?


18

すべてのウィンドウを前面に表示する「アクティブ化」を実際に行わずに、アプリケーションの特定のウィンドウを選択/フォーカスするメソッドをAppleScriptで探しています。

ここに私が持っているものがあります:

tell application "Google Chrome"
    set windowTitle to title of first window whose title contains "whatever"
end tell
tell application "System Events" to tell process "Google Chrome"
    click menu item windowTitle of menu 1 of menu bar item "Window" of menu bar 1
end tell
tell application "Google Chrome" to activate    

問題は、最後の行の「アクティブ化」です。これですべてが前面に表示されますが、1つのウィンドウが必要です。

回答:


15

activateコマンドがすべてのウィンドウを表示するのは正しいです。openシェルコマンドは、しかし一つのウィンドウが発生します。

tell application "Google Chrome" to set index of window 1 where title contains "whatever" to 1
delay 0.05
do shell script "open -a Google\\ Chrome"

ああ、これは素晴らしい。残念ながら、Chromeが既にフォーカスされている場合、「何でも」ウィンドウが前面に点滅するだけで、現在フォーカスされているウィンドウが勝ちます。w-open -aに沿って「クリックメニュー項目」テクニックを使用する場合、動作するようですが、それにはアクセシビリティが必要です。それを回避するためのアイデアはありますか?
アーロンジェンセン14年

1
2行の間に「delay 0.05」を追加するだけで完全に機能するようです。再度、感謝します!
アーロンジェンセン14年

再現できませんでしたが、試してみることもできますtell application "System Events" to tell process "Google Chrome" to perform action "AXRaise" of window 1
LRI

3
私は次のようになっています:execution error: The variable title is not defined. (-2753)
2016年

3
再:実行エラー。に変更titlenameます。
ヴォーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.