如何使用 AppleScript 根據某些條件 (OS X) 將應用程式置於前台

如何使用 AppleScript 根據某些條件 (OS X) 將應用程式置於前台

我正在嘗試找到一種方法,根據網頁中發生的事件自動將網頁瀏覽器置於前面(即給予其焦點,使其在螢幕上可見)。我可以完全控制該網頁,因此我可以讓它執行我需要的任何操作來觸發此操作。

我需要打開幾個應用程序,並在後台打開一個網頁,該網頁正在監視一些攝影機。當攝影機移動時,我需要將網頁瀏覽器視窗移到前面,以便它可見,而不是正在使用的任何應用程式。

我在想類似這個人試圖做的事情:如何在 Mac OS X Lion 上每 15 分鐘將應用程式置於前台?

我正在考慮使用 AppleScript 連續循環運行,每秒檢查 Safari 中打開的頁面,掃描一些更改,然後向 Safari 發送“激活”命令以將其置於前面。這是我應該如何解決這個問題,還是有更好的方法?

答案1

我可能只使用 launchd 或 cron 而不是將腳本作為後台進程運行。

  1. 在 AppleScript 編輯器中的某個位置儲存這樣的腳本:

    try
        tell application "Safari"
            tell document 1 where name starts with "Webcam" to do JavaScript "--"
            if result is "--" then activate
        end tell
    end
    
  2. 像這樣儲存屬性列表~/Library/LaunchAgents/com.superuser.443513.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.superuser.443513</string>
        <key>ProgramArguments</key>
        <array>
            <string>osascript</string>
            <string>/Users/username/Library/Scripts/script.scpt</string>
        </array>
        <key>StartInterval</key>
        <integer>5</integer> <!-- every 5 seconds -->
    </dict>
    </plist>
    
  3. launchctl load ~/Library/LaunchAgents/com.superuser.443513.plist


你能用curl來檢查條件嗎?您可以透過編輯 crontabEDITOR=nano crontab -e並新增以下行每隔一分鐘執行一次:

*/2 * * * * [[ -n "$(curl -L http://superuser.com/questions/443513 | grep automate)" ]] && open http://example.com

相關內容