获取打开的窗口可可
的名单我是新来的可可,我想知道我怎样才能打开的所有窗口的列表。我不是在谈论运行程序,因为这将是一件容易的事情。我想列出窗口,例如,如果我已预览运行10 pdf打开,我的程序应该能够检索所有这些pdf的列表。 我也想知道是否有一些API可用于与外部应用程序已经打开的窗口进行交互(也可能会移动它们或执行其他操作)。 谢谢。获取打开的窗口可可
首先,可可不是首字母缩写,所以它不是“可可”。 :-)
其次,您唯一的(公共API)选项是Accessibility API。您必须在系统偏好设置的辅助功能面板中启用对辅助设备的访问。
看看该文档上手:Accessibilty Overview
改成了“可可” :-) 我会看看辅助功能API,我希望我会找到我需要的一切。谢谢。 – Raffo 2010-01-25 18:43:43
我已经预览了10 PDF打开运行,我的程序应该能够检索与所有这些PDF格式的列表。
嗯,这是最困难的部分。您可以通过辅助功能获取窗口,但辅助功能不会将它们与任何类型的文档对象相关联。
AppleScript可以用于某些应用程序,但Preview不是其中之一。事实上,大多数应用程序不是。
所以,你可以得到的窗口很轻松了名单,但获得有意义的信息约或从内这些窗口从棘手的范围几乎是不可能的。您最好的选择可能是针对不可编写脚本的应用程序的辅助功能,AppleScript和错误报告的组合,以及您的应用程序无法正常运行的知识。
所以这个想法比我想象的更难...但是也许如果我只是可以得到窗口标题,我可以有文件名,但这并不明显,根本就没有用处。 – Raffo 2010-01-26 20:46:46
是的,因为单独的文件名不会告诉你*它在哪里,并且许多不同的文件可能具有相同的名称;并且因为用户可能会打开多个具有相同名称的文件,所以无法分辨哪个窗口可识别哪个文件。 – 2010-01-26 21:33:56
@ PeterHosey的提示* AppleScript *绝对不是最美丽的,但却是我找到的最简单最直接的方式。这是我在我的Cocoa应用程序中使用的:'告诉应用程序(路径到最前面的应用程序作为Unicode文本)以获取(文档1的路径)'获取当前*文档* – 2015-01-06 16:00:16
您可以使用CGWindowListCopyWindowInfo
来检索当前用户会话中的窗口列表。
这是一个碳功能,虽然 - 不是可可 - 但是从可可应用程序调用的完美,在这里记载:Quartz Window Services Reference : CGWindowListCopyWindowInfo()。
如果你是新来的可可,这是不适合你的话题。这很难,解决方案不会涉及太多可可... – 2010-01-25 23:27:32
是的,我知道,但我希望能够解决这个问题。当然,我正在学习可可,而且我对电脑编程并不陌生,所以我认为可可对我来说不是问题。问题是,我想要做的是很难为已经写好的原因。 – Raffo 2010-01-30 21:10:16