Ich habe ein Applescript, um meine Arbeitsumgebung zu initiieren, habe aber einen kleinen Streit damit. Ich möchte, dass das Skript mehrere Programme startet und sie dann ausblendet, sobald sie gestartet sind. Der Code sieht derzeit folgendermaßen aus:
tell application "Firefox" to activate
delay 0.5
tell application "Finder"
set visible of process "Firefox" to false
end tell
Offensichtlich ist Verzögerung 0,5 nur ein Platzhalter. Idealerweise möchte ich das Programm ausblenden, sobald es vollständig geladen ist. Leider variieren meine Ladezeiten stark (von 0,2 bis 5 Sekunden). Gibt es so etwas wie einen Rückruf oder eine Funktion zur Überwachung der Ereignisse von Anwendungen?
macos
applescript
Christliche Macht
quelle
quelle
open -aw Firefox
die App mit AppleScript anrufen und dann ausblenden?-a
erfordert das Öffnen einer bestimmten App und-W
wartet, bis die geöffnete App geschlossen wird. Mein Verständnisman open
ist, dass es keine Optionen gibt, die dafür nützlich sein könnten?Antworten:
Fragen Sie den Sichtbarkeitsstatus in einer Schleife ab und wiederholen Sie den Vorgang, um ihn unsichtbar zu machen, bis er funktioniert:
Bei der Überwachung des Ereignisprotokolls von AppleScript Editor ist es offensichtlich, dass einige Versuche erforderlich sind. Folgendes wurde 1490 Mal wiederholt, als ich es mit Xcode versuchte:
Bevor es endlich funktionierte:
quelle
Normalerweise müssen Sie keine Verzögerungen hinzufügen. In diesem Fall wird die visibile-Eigenschaft nach Abschluss des Öffnens der Anwendung auf true zurückgesetzt, selbst wenn Sie sie auf false setzen. Sie können also den Wert nicht überprüfen oder feststellen, ob der Prozess vorhanden ist.
Sie können eine Anwendung ohne sichtbare Fenster verwenden
launch
oderopen -jg
öffnen.launch
öffnet ein neues Fenster, wenn die Anwendung zuvor nicht geöffnet war.open -jg
öffnet ein neues Fenster, wenn die Anwendung geöffnet ist, aber keine sichtbaren Fenster hat.Einige Anwendungen wie Alfred, Growl, nvALT, The Unarchiver und X11 funktionierten mit beiden nicht. Möglicherweise müssen Sie nur eine feste Verzögerung hinzufügen, bevor Sie
visible
auf false setzen.quelle
open -j
nicht, zumindest am 10.6.8 / Bash 3.2.48. Auf welcher Version bist du?invalid option -j
. Könntest du mir auch deine sagenbash -version
? Es wäre darauf zurückzuführen, oder?do shell script
verwendet trotzdem sh.open
unterstützende ausführbare Datei zu erhalten-j
?