Objective-C 获取默认应用程序

标签 objective-c macos

我需要获取以下默认应用程序:防火墙、邮件、Office、防病毒软件。 类似于 Windows 中存在的东西: Default Windows Programs 我想 OSX 也有类似的东西,可以通过编程方式检索。

我已经成功获取邮件应用程序,但我不知道如何获取其他应用程序:

CFURLRef mailURL = CFURLCreateWithString(kCFAllocatorDefault, CFSTR("mailto://"), NULL);
CFURLRef mailAppURL = NULL;
OSStatus ret = 0;
if((ret = LSGetApplicationForURL(mailURL, kLSRolesAll, NULL, &mailAppURL)) == 0) {
  CFStringRef path = CFURLCopyFileSystemPath(mailAppURL, kCFURLPOSIXPathStyle);
}

谢谢!

最佳答案

Mac OS X 没有用于事件或任务的默认程序,但它具有用于 URL 方案和文件扩展名的默认程序。就像您的邮件代码一样,您可以通过查找 http URL 方案的默认处理程序来找到默认的 Web 浏览器。对于媒体播放器,您可以选择 .mp4 或 .mp3 等媒体类型,然后使用 LSGetApplicationForInfo 获取其默认处理程序,但我认为 .mp4 和 .mp3 可能具有不同的默认处理程序。我不知道有什么方法可以找到默认的防病毒程序或防火墙。

标题要求使用 Objective-C 方法,我想可以使用 -[NSWorkspace URLForApplicationToOpenURL:] 而不是 Launch Services 函数。

关于Objective-C 获取默认应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29434188/

相关文章:

iphone - 为原始数据类型堆栈编写方法时使用 'id' 吗?

objective-c - 跟随手指旋转的炮塔/大炮的 iOS 数学

java - 如何在 Windows 和 Mac 上为 Java 应用程序设置正确的字体?

mysql - 在mac终端运行一个sql文件

ios - UItabbar 项目不显示 Storyboard 引用

objective-c - 处理核心数据一对多关系

objective-c - CGSizeMake 不适用于常量

mysql - 允许任何 MAC 管理员用户在启动时运行 MySQL 服务器

macos - Mac OS X上的软件包卸载程序

windows - 将换行格式从 Mac 转换为 Windows