0

给定一个进程的PID,我如何检查它是否是一个窗口进程?我正在寻找 OSX 上的解决方案。

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

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

4

1 回答 1

2
[NSWorkspace runningApplications] 

NSArray这将返回 a中NSRunningApplication具有属性的所有用户应用程序processIdentifier

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

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

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

在此处输入图像描述

特别是,您正在寻找NSApplicationActivationPolicyRegular.

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

所有其他方法均已弃用,将来可能无法使用。不再推荐像GetBSDProcessList和 Carbon's这样的方法。GetProcessInformation

于 2012-09-06T19:08:29.653 回答