检查进程是否是OSX中的窗口化进程

时间:2012-09-06 18:25:55

标签: objective-c c macos cocoa unix

鉴于流程的PID,我如何检查它是否是一个窗口化的流程?我正在寻找OSX的解决方案。

需要Objective-C / C解决方案。 我在OSX Mountain Lion上。

我将窗口化流程定义为在活动监视器中选择“窗口化流程”选项卡时可以看到的流程。 http://cl.ly/FeXR

1 个答案:

答案 0 :(得分:2)

[NSWorkspace runningApplications] 

这会将NSArray中的所有用户应用程序作为具有属性NSRunningApplication的{​​{1}}实例返回。

或者您可以直接使用processIdentifier来获取具有指定PID的应用程序。

以下是示例代码:http://developer.apple.com/library/Mac/#samplecode/AppList/Introduction/Intro.html

通过runningApplicationWithProcessIdentifier:的{​​{1}}属性,您可以获得Windowed状态。我修改了activationPolicy代码,使其只显示窗口化的应用程序,如下所示。这与活动监视器显示的内容相匹配。

enter image description here

特别是,您正在寻找NSRunningApplication

请注意这些限制。这仅适用于用户拥有的进程。

所有其他方法均已弃用,将来可能无法使用。不建议使用AppList和Carbon NSApplicationActivationPolicyRegular等方法。