給定進程的PID,如何檢查它是否爲窗口化進程?我正在尋找OSX上的解決方案。檢查OSX中的進程是否爲窗口化進程
需要Objective-C/C解決方案。 我在OSX Mountain Lion上。
我將窗口化進程定義爲在活動監視器中選擇「窗口化進程」選項卡時可以看到的進程。 http://cl.ly/FeXR
給定進程的PID,如何檢查它是否爲窗口化進程?我正在尋找OSX上的解決方案。檢查OSX中的進程是否爲窗口化進程
需要Objective-C/C解決方案。 我在OSX Mountain Lion上。
我將窗口化進程定義爲在活動監視器中選擇「窗口化進程」選項卡時可以看到的進程。 http://cl.ly/FeXR
[NSWorkspace runningApplications]
這將返回一個NSArray
爲NSRunningApplication
具有財產processIdentifier
情況下,所有的用戶應用程序。
或者您可以直接使用runningApplicationWithProcessIdentifier:
來獲取具有指定PID的應用程序。
下面是示例代碼:http://developer.apple.com/library/Mac/#samplecode/AppList/Introduction/Intro.html
通過的activationPolicy
財產NSRunningApplication
你可以得到的窗狀態。我修改了AppList
代碼,使其僅顯示窗口應用程序,如下所示。這與活動監視器顯示的內容相匹配。
尤其是你正在尋找的NSApplicationActivationPolicyRegular
。
但請注意限制。這僅適用於用戶擁有的流程。
所有其他方法都被棄用,並且可能在將來無法使用。像GetBSDProcessList
和Carbon的GetProcessInformation
等方法不再被推薦。
[This answer](http://stackoverflow.com/a/1888944/962089)解釋了原始win32中的一個過程,您可以在其中檢查每個正在運行的窗口,以查看它是否屬於您想要的過程。也許這有幫助? – chris
@chris謝謝,但我正在尋找Objective-C或C中的OSX解決方案。 – fdh
無論出於何種原因,儘管您多次提及OSX,但它從未在我的大腦中註冊過。道歉。也許有類似的OSX方法。 – chris