如何从所有正在运行的应用程序中获取所有打开的 NSWindow 列表?
有没有办法从 mac 桌面获取打开或可见的 NSWindow 列表?
Is there a way to get list of open or visible NSWindow from mac desktop?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请注意,并非所有窗口都一定是
NSWindows
,并且NSWindow
只为您自己的地址空间中的窗口提供接口。访问每个窗口的受支持方式是 CGWindow API。查看 Son of Grab 示例代码看看它是如何完成的。
Note that not all windows are necessarily
NSWindows
, and thatNSWindow
only provides an interface to windows in your own address space.The supported way to access every window is the
CGWindow
API. Take a look at the Son of Grab sample code to see how it's done.您可以使用辅助功能 API(必须在“系统偏好设置”下启用辅助功能才能工作)从其他进程获取有关窗口(和其他 UI 元素)的信息。 这个问题可能正是您的问题正在寻找。
You can use the accessibility API (accessibility must be enabled under System Preferences for it to work) to get information on windows (and other UI elements) from other processes. This question might be just what you're looking for.
所有正在运行的应用程序?不可以。您只能获取自己应用程序的 NSWindows。您也许可以使用Universal Access 或Core Graphics API 来获取有关其他应用程序窗口的一些信息,但不能完全访问。
ALL running applications? No. You can only get the NSWindows of your own app. You may be able to use Universal Access or Core Graphics APIs to get some information about windows of other apps, but not full access.