如何使用 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

相关内容