我知道在 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 可执行文件)?
最佳答案
在 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+ 在 multi-process architecture 中运行:一个主进程和几个渲染进程,上面的代码只会让你得到主进程;渲染过程不容易访问,控制任何单独的渲染过程也没有多大意义。
关于macos - 从命令行使用 URL 打开 Safari 并获取进程句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150569/