15

我知道 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 可执行文件的原因)?

4

1 回答 1

6

在 AppleScript 中,使用 URL 打开 Safari 后

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+ 运行在多进程架构中:一个主进程和多个渲染进程,上面的代码只会让您获得主进程;渲染进程不容易访问,控制任何单独的渲染进程也没有多大意义。

于 2012-09-03T15:57:12.900 回答