2012-08-27 12 views
10

So che ci sono diversi modi in MacOS per aprire Safari con un determinato URL dalla riga di comando comeApri Safari con l'URL da linea di comando e ottenere handle di processo

open -a Safari http://stackoverflow.com 

O come un AppleScript

tell application "Safari" to open location "http://stackoverflow.com/" 

Ma se sto iniziando il processo ad es. a livello di codice, avrò solo l'handle per il processo open/applescript (che termina subito dopo l'avvio di Safari).

Come posso avviare Safari con un determinato URL e ottenere l'handle per il processo di Safari (è ancora oltre me il motivo per cui non può semplicemente passare l'URL come argomento della riga di comando dell'eseguibile di Safari)?

risposta

6

in AppleScript, dopo aver aperto Safari con l'URL

tell application "Safari" to open location "http://stackoverflow.com/" 

si può ottenere l'oggetto processo

tell application "System Events" to set proc to application process "Safari" 

l'oggetto proc avrà pid, raggruppare id ed ecc collegato ad esso.

Si prega di notare che Safari 5+ viene eseguito in un multi-process architecture: un processo master e diversi processi di rendering, il codice sopra riportato otterrà solo il processo principale; i processi di rendering non sono facilmente accessibili, né ha molto senso controllare ogni singolo processo di rendering.

Problemi correlati