osx: Startet ein Programm, wenn ein anderes Programm geöffnet wird

1201
metasequoia

Ich möchte eine Methode zum Starten eines Programms, wenn ein anderes Programm startet. Insbesondere möchte ich ein MS Word-Dokument öffnen und meinen Zitiermanager gleichzeitig öffnen (EndNote unterstützt diese Funktion innerhalb der MS Word-Voreinstellungen, aber ich habe kürzlich den Zitiermanager gewechselt).

Ich möchte jedes vorhandene Word-Dokument auf meiner Festplatte öffnen und das zweite Programm auslösen können. Dieselbe Frage wurde kürzlich für die Windows 7-Umgebung beantwortet.

1
Dies ist eine großartige Frage, ich würde auch gerne wissen, wie man ein Programm schließt, wenn ein anderes schließt. Kann dies auf dieselbe Weise geschehen? Mike Kormendy vor 10 Jahren 0

2 Antworten auf die Frage

2
user495470

Speichern Sie eine Eigenschaftsliste wie diese ~/Libary/LaunchAgents/test.plistund laden Sie sie mit launchctl load ~/Libary/LaunchAgents/test.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>test</string> <key>ProgramArguments</key> <array> <string>osascript</string> <string>-e</string> <string>tell application "System Events" set p to name of processes if p contains "TextEdit" and p does not contain "Mail" do shell script "open -gja Mail" end end</string> </array> <key>StartInterval</key> <integer>10</integer> </dict> </plist> 

open -j( --hide) wurde in 10.8 hinzugefügt. open -jgöffnet manchmal ein neues sichtbares Fenster, wenn eine Anwendung ausgeführt wird, aber kein Fenster geöffnet ist.

Wenn StartInterval 9 Sekunden oder weniger beträgt, wird das Programm einfach gedrosselt.

com.apple.launchd.peruser.501[128]: (test) Throttling respawn: Will start in 7 seconds 
Kann eine der beiden Anwendungen geschlossen werden, wenn die andere auf dieselbe Weise geschlossen wird? Mike Kormendy vor 10 Jahren 0
0
Juan Arroyodorado

Danke für den Code. Es ist mir gelungen, es etwas zu erweitern, um auch den gestarteten Prozess zu beenden, wenn der ursprünglich überwachte Prozess nicht mehr läuft. Hier ist mein Code:

<?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>TextEditWatcher</string> <key>ProgramArguments</key> <array> <string>osascript</string> <string>-e</string> <string>tell application "System Events" set p to name of processes if p contains "TextEdit" and p does not contain "Mail" then do shell script "open -gja Mail" end if if p does not contain "TextEdit" and p contains "Mail" then tell application "Mail" to quit end if end tell</string> </array> <key>StartInterval</key> <integer>30</integer> </dict> </plist> 

Auf meinem System (10.9.4) war ein StartInterval von 10 bereits zu viel und da das Timing in meinem Fall nicht entscheidend ist, habe ich 30 Sekunden gewählt. Aber 15 oder 20 sollten auch in Ordnung sein. Installation und Test wie in Lri's Antwort erwähnt.