使用命令行中的URL打开Safari并获取进程句柄

时间:2012-08-27 22:38:32

标签: macos process safari

我知道MacOS中有几种方法可以通过命令行中的给定URL打开Safari,如

open -a Safari http://stackoverflow.com

或作为AppleScript

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

但如果我开始这个过程,例如以编程方式我将只获得open / applescript进程的句柄(在Safari启动后立即退出)。

如何使用给定的URL启动Safari并获取Safari进程的句柄(为什么它不能只将URL作为命令行参数传递给Safari可执行文件,这仍然超出我的意思?)

1 个答案:

答案 0 :(得分:6)

用URL打开Safari后,在AppleScript中

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

您可以通过

获取过程对象
tell application "System Events" to set proc to application process "Safari"

proc对象将附加pid,bundle id等。

另请注意,Safari 5+在multi-process architecture中运行:主进程和多个渲染过程,上面的代码只会让您获得主进程;渲染过程不易访问,控制任何单独的渲染过程也没有多大意义。