Получение списка приложений, способных к открытию типа файла

Я пытаюсь получить список приложений, которые способны к открытию типа файла. До сих пор я смог получить название единственного использования приложения NSWorkspace getInfoForFile:application:type: метод.

Есть ли какой-либо API, который я могу назвать для получения списка приложений, способных к открытию файла?

8
задан Bryan Kyle 22 December 2009 в 22:06
поделиться

2 ответа

Думаю, вам нужно будет воспользоваться Службой Запуска, чтобы получить список. LSCopyApplicationURLsForURL "Найдены все известные приложения, подходящие для открытия пункта, обозначенного URL."

Кажется, если вы передаете в URL файла, вы должны получить ваш (CFArrayRef) список приложений.

.
11
ответ дан 5 December 2019 в 08:52
поделиться

Для дальнейшего использования, я был специально заинтересован в получении списка приложений, способных открыть определенный тип документа. Принятый ответ указал в правильном направлении, но не является полным решением, как LSCopyApplicaionURLsForURL и его брат и сестра LSCopyAllRoleHandlersForContentType вернуть идентификатор пакета, а не само приложение. Поэтому мне все равно нужно было:

  • Path
  • Display Name; и
  • Icon

Ниже приведен код, который я использовал для получения всей этой информации:

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];
}
8
ответ дан 5 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: