objective-c – cocoa获取已安装应用程序的列表

objective-c – cocoa获取已安装应用程序的列表,第1张

概述有没有办法在 cocoa中为当前用户安装所有已安装的应用程序? NSArray *runningApps = [[NSWorkspace sharedWorkspace] launchedApplications]; 以上为我提供了当前正在运行的应用程序,但对于我的应用程序,我需要列出所有已安我需要应用程序密钥(例如com.apple.appname),因此system_profiler将不起作用 有没有办法在 cocoa中为当前用户安装所有已安装的应用程序?

NSArray *runningApps = [[NSWorkspace shareDWorkspace] launchedApplications];

以上为我提供了当前正在运行的应用程序,但对于我的应用程序,我需要列出所有已安我需要应用程序密钥(例如com.apple.appname),因此system_profiler将不起作用.

解决方法 对于OSX,用于收集有关可启动应用程序信息的密钥库是Launch Services(请参阅Apple的 Launch Services Programming Guide),它将为您提供有关应用程序的信息,例如bundle ID,它接受的文件类型等.

要实际查找计算机上的所有可执行文件,您将需要以一种形式或另一种形式使用Spotlight(API或通过调用mdfind).

使用命令行版本的示例:

mdfind "kMDItemContentType == 'com.apple.application-bundle'"

将返回所有应用程序路径的列表.

在聚光灯API中使用类似的术语将生成一个适当的列表,然后您可以使用NSBundle打开主捆绑包或使用启动服务来检索有关该应用程序的信息.

我没有时间对此进行全面测试,但基本代码是:

NSMetadataquery *query = [[NSMetadataquery alloc] init];        [query setSearchScopes: @[@"/Applications"]];  // if you want to isolate to Applicationsnspredicate *pred = [nspredicate predicateWithFormat:@"kMDItemContentType == 'com.apple.application-bundle'"];// Register for NSMetadataqueryDIDFinishGatheringNotification here because you need that to// kNow when the query has completed[query setPredicate:pred];[query startquery];

(修改为使用@ John独立于本地化的查询而不是原始查询)

总结

以上是内存溢出为你收集整理的objective-c – cocoa获取已安装应用程序的列表全部内容,希望文章能够帮你解决objective-c – cocoa获取已安装应用程序的列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006810.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存