2012-08-27 63 views
10

我知道在MacOS的幾種方式與在命令行中像打開Safari使用命令行的網址,並得到進程句柄

open -a Safari http://stackoverflow.com 

或者作爲一個AppleScript

tell application "Safari" to open location "http://stackoverflow.com/" 
一個給定的URL打開Safari瀏覽器

但是,如果我開始這個過程,例如以編程方式,我將只獲取open/applescript進程的句柄(在Safari啓動後立即退出)。

如何用給定的URL啓動Safari並獲取Safari進程的句柄(它仍然超出了爲什麼它不能將URL作爲命令行參數傳遞給Safari可執行文件)?

在AppleScript的

回答

6

,與URL

打開Safari瀏覽器
tell application "Safari" to open location "http://stackoverflow.com/" 

後,您可以通過

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

的進程內對象獲取過程對象將有PID,包ID和等連接到它。

另外請注意,Safari 5+運行在multi-process architecture:一個主進程和幾個渲染過程,上面的代碼只會讓你成爲主進程;渲染過程不容易訪問,控制任何單獨渲染過程也沒有多大意義。