我正在开发一个 Cocoa/Objective C 应用程序,它可以使用 AppScript 从任何应用程序中读取事件文档。我已经成功完成了这一部分,但如果能够确定应用程序是否基于文档,那就太好了。
显而易见的方法是查看应用程序内事件窗口的 AXDocument 属性,如果它包含路径,我们就知道该应用程序是基于文档的。但是,如果文档未保存,则此操作不起作用。这也相当笨拙。相当烦人的是,AXDocument 属性可能出现在非文档应用程序中,因此它的存在或不存在不能用于提供我所寻求的信息。
我尝试查看通过应用程序进程和单个窗口的 AppleScript 公开的其他属性和属性。这些项目似乎都没有告诉我该应用程序是否基于文档。
我还尝试查看一些 Info.plist 文件,但看不到任何可靠地表明这一点的内容。是我看的还不够仔细吗?或者在 Objective C 或 AppleScript 中有没有好的方法可以做到这一点?
最佳答案
根据 Document-Based Application Architecture 构建的基于文档的应用程序指南应满足几个条件。 我不确定是否/如何可以访问 Mac OS 上的不同应用程序,但通过反射(在 Objective-C 中),您可以测试 NSDocument 子类是否存在。 另一个想法是只查看菜单项...是否有"file"->“新建”、"file"->“打开”菜单项?
关于objective-c - 如何检测应用程序是否基于文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666529/