给定一个进程的PID,我如何检查它是否是一个窗口进程?我正在寻找 OSX 上的解决方案。
需要 Objective-C/C 解决方案。我在 OSX Mountain Lion 上。
我将窗口进程定义为在活动监视器中选择“窗口进程”选项卡时可以看到的进程。http://cl.ly/FeXR
给定一个进程的PID,我如何检查它是否是一个窗口进程?我正在寻找 OSX 上的解决方案。
需要 Objective-C/C 解决方案。我在 OSX Mountain Lion 上。
我将窗口进程定义为在活动监视器中选择“窗口进程”选项卡时可以看到的进程。http://cl.ly/FeXR
[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