【发布时间】:2014-04-24 13:27:22
【问题描述】:
GetProcessPID 在 OSX 10.9 中被标记为已弃用,并附有注释:
使用适当的 processIdentifier 属性 NSRunningApplication 对象。
问题是NSRunningApplication 的构造类方法无法通过ProcessSerialNum 获取NSRunningApplication,只能通过PID 或包名称。
捆绑包名称太模糊(可能有多个实例)并且我没有 PID(这是我想要的)。
在 OSX 10.9 中,有没有办法在您拥有 PSN 时获取 PID?
【问题讨论】:
-
我认为一般的方法是从提供 PSN 的任何 API 切换到现代 API。那么,您首先如何获得 PSN?
-
我正在从系统进程内存中提取它们。它只包含 PSN。
-
这引发了你为什么要这样做的问题。如果您在高层次上解释您要完成的工作,也许有一个解决方案不涉及在系统进程的内存中四处寻找(!?!)。
-
我想要 Dock 显示每个图标的 UILayer 以及将其与进程关联的能力。因为这个应用程序明显违反了未发布的 API,所以使用未发布的 API 将 PSN 解析为 PID 是没有问题的。这在很大程度上是一个好奇的问题,因为苹果似乎过早地放弃了很多 API。
-
我认为人们通常使用 Accessibility API 来查找停靠图标窗口的位置。
标签: objective-c macos pid nsrunningapplication