2017-08-17 8 views
2

私が持っているシナリオは、新しいウィンドウが開き、その内部でスクリプトが実行されるということです。私はこれらの2つの方法試みる前のアクティブウィンドウに戻ってくるためにどのような方法を探していたのです:キーボードショートカットを実行

1.忍者の方法でサファリウィンドウを交換する

tell application "System Events" to keystroke "§" using command down 

注:以来不快な経験ウィンドウスワップの結果としてわずかなフラッシュバック。

2 lastWindow個人のIDを与え、それ以降の先頭にそれをもたらす

set lastWindow to id of window 1 
... 
set index of window id lastWindow to 1 

注:それは目に見えるが、非アクティブ状態になり、追加を必要lastWindowが変更された場合ページをクリックしてください本当にアクティブ

私も変更しようとしました新しく作成されたウィンドウのが最小化され、バックグラウンドスクリプトの実行速度が遅くなります。

質問。それで、新しいウィンドウを作成し、最後のウィンドウにスワップする方法がありますが、最も静かな方法ですか?

注:lastWindowが変更されると、それは次のように見えるが、非アクティブ状態となり、真のアクティブ

作るためにページの追加のクリックを必要とを参照する

答えて

1

例AppleScript コードは、前の最前面のウィンドウを一番上にしてフルフォーカスにしてアクティブにします。追加のクリックは必要ありません。

tell application "Safari" 
    activate 
    set thePreviousFrontWindowID to id of front window 
    make new document with properties {URL:"https://www.google.com"} 
    delay 4 -- # The delay command is here as a placeholder for whatever you're doing in the new window. 
    set index of window id thePreviousFrontWindowID to 1 
end tell 

tell application "System Events" to perform action "AXRaise" of front window of application process "Safari" 

それはあなたがウィンドウに完全にフォーカスされたアクティブなトップのすべての方法を取得する必要があり、この例のAppleScript コードの最後の行です。

質問:を参照する

それでは、新しいウィンドウを作成し、最後のウィンドウにスワップする方法がありますが、最も静かな方法ですか? 、例えば、上記の例のAppleScript コードを実行する限り、視覚的な気晴らしを最小限に抑えるように、しかし、それ以上「サイレント」であることができなかったときに、Windowsが任意のサウンドをしないので

は、それはそのように主観的ですそれはほとんど尋ねられてはいけませんでした。実際には、手動またはプログラムでアプリのウィンドウを動かすと、視覚障害のレベルが常にあることになります。

唯一の提案は、新しいウィンドウのboundsを前のフロントウィンドウのものに設定することです。そして、新しいフロントウィンドウで起こっていることがすべて実行され、前のフロントウィンドウが前方に移動すると、そのウィンドウ全体が表示され、その後ろにある新しいウィンドウは表示されません。

tell application "Safari" 
    activate 
    set thePreviousFrontWindowID to id of front window 
    set thePreviousFrontWindowBounds to bounds of front window 
    make new document with properties {URL:"https://www.google.com"} 
    set bounds of front window to thePreviousFrontWindowBounds 
    delay 4 -- # The delay command is here as a placeholder for whatever you're doing in the new window. 
    set index of window id thePreviousFrontWindowID to 1 
end tell 

tell application "System Events" to perform action "AXRaise" of front window of application process "Safari" 

これは、あなたがどのようにしてより遠くになるのかを示す単なる例です。

+0

@ user34398945ありがとうございます、両方のオプションが完全に説明した問題を解決しました:D – volna

関連する問題