So bringen Sie eine Anwendung basierend auf bestimmten Bedingungen (OS X) mit AppleScript in den Vordergrund

So bringen Sie eine Anwendung basierend auf bestimmten Bedingungen (OS X) mit AppleScript in den Vordergrund

Ich versuche, eine Möglichkeit zu finden, einen Webbrowser automatisch in den Vordergrund zu holen (d. h. ihn zu fokussieren, ihn auf dem Bildschirm sichtbar zu machen), basierend auf einem Ereignis, das auf einer Webseite stattfindet. Ich habe die volle Kontrolle über die Webseite, also kann ich sie alles tun lassen, was ich brauche, um dies auszulösen.

Ich muss mehrere Apps geöffnet haben und im Hintergrund eine Webseite laufen lassen, die einige Videokameras überwacht. Wenn eine Videokamera eine Bewegung registriert, muss das Fenster des Webbrowsers in den Vordergrund kommen, damit es anstelle der gerade verwendeten App sichtbar ist.

Ich dachte an etwas Ähnliches wie das, was dieser Typ versucht hat:Wie bringt man unter Mac OS X Lion alle 15 Minuten eine Anwendung in den Vordergrund?

Ich dachte daran, AppleScript in einer Endlosschleife laufen zu lassen und einmal pro Sekunde die geöffnete Seite in Safari zu überprüfen, nach Änderungen zu suchen und dann den Befehl „Aktivieren“ an Safari zu senden, um sie in den Vordergrund zu bringen. Ist das die Vorgehensweise, oder gibt es einen besseren Weg?

Antwort1

Ich würde wahrscheinlich einfach launchd oder cron verwenden, anstatt das Skript als Hintergrundprozess auszuführen.

  1. Speichern Sie ein Skript wie dieses irgendwo im AppleScript-Editor:

    try
        tell application "Safari"
            tell document 1 where name starts with "Webcam" to do JavaScript "--"
            if result is "--" then activate
        end tell
    end
    
  2. Speichern Sie eine Immobilienliste wie diese~/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


Könnten Sie einfach curl verwenden, um den Zustand zu prüfen? Sie könnten es jede zweite Minute ausführen, indem Sie die Crontab bearbeiten EDITOR=nano crontab -eund eine Zeile wie diese hinzufügen:

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

verwandte Informationen