【问题标题】:Getting a List of Applications Capable of Opening a Type of File获取能够打开某种文件类型的应用程序列表
【发布时间】:2009-12-22 22:06:14
【问题描述】:

我正在尝试获取能够打开某种文件类型的应用程序列表。到目前为止,我已经能够使用NSWorkspacegetInfoForFile:application:type: 方法获取单个应用程序的名称。

我可以调用任何 API 来获取能够打开文件的应用程序列表吗?

【问题讨论】:

    标签: cocoa macos


    【解决方案1】:

    我相信您需要使用启动服务来获取列表。 LSCopyApplicationURLsForURL "找到所有适合打开由 URL 指定的项目的已知应用程序。"

    如果你传入一个文件 URL,你应该得到你的 (CFArrayRef) 应用程序列表。

    【讨论】:

      【解决方案2】:

      为了将来参考,我特别感兴趣的是获取能够打开特定文档类型的应用程序列表。接受的答案指向正确的方向,但不是一个完整的解决方案,因为LSCopyApplicaionURLsForURL 及其兄弟LSCopyAllRoleHandlersForContentType 返回一个包标识符,而不是应用程序本身。因此我仍然需要应用程序的:

      • 路径
      • 显示名称;和
      • 图标

      下面是我用来检索所有这些信息的代码:

      NSArray* handlers = LSCopyAllRoleHandlersForContentType(@"com.adobe.pdf", kLSRolesAll);
      for (NSString* bundleIdentifier in handlers) {
         NSString* path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier: bundleIdentifier];
         NSString* name = [[NSFileManager defaultManager] displayNameAtPath: path];
         NSImage* icon = [[NSWorkspace sharedWorkspace] iconForFile: path];
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 2010-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多