Il processo, RSScriptRunner
, rappresenta uno script attualmente in esecuzione attivato da FastScripts.app. (FastScripts non assegna titoli di processo univoci agli script attivati).
Se uno ha più processi titolati RSScriptRunner
in esecuzione simultaneamente, quindi il seguente codice:
tell application "System Events" to windows of process "RSScriptRunner"
restituirà solo il nome della finestra del processo che è iniziato al più presto.
Tuttavia, vorrei ottenere il nome di ogni finestra di ogni processo RSScriptRunner
.
Qualcuno sa come ottenerlo in AppleScript?
Il mio intento ultimo qui è quello di implementare un controllo che assicuri che solo una istanza di uno script possa essere eseguita simultaneamente. È possibile eseguire più script diversi in esecuzione, ma i multipli di uno script in esecuzione allo stesso tempo non sono desiderati.
Il codice sarebbe simile a questo:
tell application "System Events"
set theWindowList to windows of process "RSScriptRunner"
if theWindowList contains "The title of the initial dialog of this script goes here." then
error number -128
end if
end tell
Questo controllo si trova nella parte superiore dello script.
Nota:
Questa è una situazione in cui la latenza minima è cruciale.
Ho ideato un metodo prolisso che ha realizzato con successo il mio risultato desiderato. Il metodo consisteva nel portare ogni titolo di processo corrente in una lista e ottenere ogni ID di processo corrente in un altro elenco corrispondente. Ho quindi recuperato il nome della finestra di ogni processo RSScriptRunner
tramite il rispettivo ID del processo (che, a differenza del nome del processo, deve essere univoco).
Tuttavia, questo metodo ha portato con sé un paio di secondi di latenza. Ho bisogno di una soluzione che sia quasi istantanea (ad esempio, la riga di codice sopra).