我想获取正在运行的应用程序的窗口列表。 我可以从[[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 –
寡妇列表更直接的意思? –