【发布时间】:2010-07-16 15:16:41
【问题描述】:
我正在尝试创建一个窗口切换应用程序。有什么方法可以获取其他应用程序的窗口列表,按最近使用的顺序排列?
【问题讨论】:
标签: objective-c cocoa accessibility macos-carbon
我正在尝试创建一个窗口切换应用程序。有什么方法可以获取其他应用程序的窗口列表,按最近使用的顺序排列?
【问题讨论】:
标签: objective-c cocoa accessibility macos-carbon
以Accessibility framework 开头。许多屏幕阅读器的钩子在这里也很有用。特别注意UIElementInspector 示例和NSAccessiblity protocol。
还有Quartz Window services,它可以轻松地为您提供屏幕上所有窗口的列表。不幸的是,它与窗口焦点(仅关卡)之类的概念无关,而且我不知道在关卡发生变化时从它那里获取通知的方法。你可能会做一些事情,比如利用 Quartz Event 框架来捕获 Cmd-Tab 之类的,但这既复杂又脆弱。不幸的是,no good way 将 CGWindowID 转换为 AXUIElementRef (该帖子适用于 10.5,但我不知道 10.6 中添加了什么来改进这一点)。但希望您可以通过 Accessibility 框架完成所需的一切。
【讨论】:
你会想要使用
[NSWorkspace runningApplications]
为您提供所有正在运行的应用程序的列表,并观看
[NSRunningApplication currentApplication]
了解用户何时切换到新应用程序以跟上最近使用的应用程序。
【讨论】: