我想獲取正在運行的應用程序的窗口列表。 我可以從[[NSWorkspace sharedWorkspace] runningApplications]
獲得正在運行的應用程序列表,但窗口列表僅在NSApplication
上可用。 有沒有辦法將NSRunningApplication
轉換爲NSApplication
,或者有些方法可以更直接地獲取窗口列表?如何獲取NSRunningApplication的窗口
5
A
回答
6
您需要查看CoreGraphics調用CGWindowListCopyWindowInfo
。
你這樣稱呼它
CFArrayRef windowList = CGWindowListCopyWindowInfo(kCGWindowListOptionOnScreenOnly | kCGWindowListExcludeDesktopElements, kCGNullWindowID);
,然後遍歷的窗口信息陣列上,發現從你感興趣的應用程序的部分,做你想要做什麼用。
+3
嘿肯!這是一個很好的答案/提示,但它仍然沒有說明如何獲得'CG/NSWindow' ;-)'NSRunningApplication'不提供窗口/窗口號,並且在嘗試時崩潰(可能做錯了事)通過'CGWindowListCopyWindowInfo'獲得'CGWindowID'獲得'NS/CGWindow' –
+1
這是因爲你不能爲另一個應用程序創建NSWindow。至於獲取特定應用程序的窗口,您可以檢查並比較'kCGWindowOwnerPID'鍵的值與'NSRunningApplication'的'processIdentifier'屬性的值。 – mattsven
相關問題
- 1. 獲取NSRunningApplication的ProcessInfo
- 2. 通過NSRunningApplication實例獲取應用程序的主窗口
- 3. 使用ProcessSerialNumber獲取NSRunningApplication
- 4. 獲取窗口
- 5. 獲取如何正確獲取NSDocument與文檔窗口相關的窗口
- 6. 如何獲取窗口的位置?
- 7. 如何獲取WPF窗口的ClientSize?
- 8. 如何在子窗口中獲取父窗口標籤的html?
- 9. 如何從子窗口獲取GUI主窗口中的數據?
- 10. 如何獲取瀏覽器窗口的X11窗口ID
- 11. 如何使用javascript從父窗口獲取子窗口url
- 12. 如何在滑動窗口中獲取當前窗口時間?
- 13. 如何獲取窗口位置並更新到其他窗口?
- 14. 如何從窗口中獲取文本?
- 15. 如何在UserControl中獲取主窗口
- 16. 如何從窗口獲取文本
- 17. 如何獲取窗口名稱? [Python]
- 18. 如何獲取桌面窗口句柄?
- 19. 如何爲java窗口獲取NSWindow *
- 20. 如何從xid獲取Gdk窗口?
- 21. 如何從InputMethodService獲取窗口?
- 22. 如何在iOS中獲取主窗口?
- 23. 如何在LockScreen中獲取窗口()?
- 24. 如何獲取窗口proc參數?
- 25. 如何隱藏窗口時獲取Process.MainWindowHandle
- 26. 如何獲取insertcomponentpresentation窗口彈出?
- 27. 如何通過HWND獲取窗口類?
- 28. 如何獲取所有窗口組?
- 29. 獲取主窗口
- 30. wxWidgets獲取窗口
下面是同樣的問題,已經回答:http://stackoverflow.com/questions/2107657/mac-cocoa-getting-a-list-of-windows-using-accessibility-api –
即使在這裏http:// stackoverflow.com/questions/13759688/how-to-find-out-if-an-instance-of-my-app-is-already-running-or-not/13759928#13759928 –
寡婦列表更直接的意思? –