macos - 从命令行使用 URL 打开 Safari 并获取进程句柄

标签 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 可执行文件)?

最佳答案

在 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/

相关文章:

java - MacOS 无法为您的平台加载 native hadoop 库...在适用的情况下使用内置 java 类

mysql - 是否可以在 macOS 上只安装 mysqldump

ios - 如何获取类方法的选择器?

linux - 如何在Mac/Linux中使进程难以终止?

javascript - 添加到 iOS 主屏幕后,如何在 PWA 上下载动态生成的 PDF 文件?

iphone - Safari iPhone - 如何检测缩放级别和偏移?

c++ - CMake 测试在 MacOS 上找不到库

java - 每个 Java 应用程序是否有一个 JVM?

multithreading - IIS Web花园是否使用线程或进程?

css - Safari 开发者 iphone 模式不起作用?