Как реализовать контекстное меню «Открыть с помощью» в OS X - PullRequest
3 голосов
/ 28 февраля 2012

Приложения в OS X, которые могут открывать файлы для запуска соответствующих приложений, часто позволяют пользователю выбрать приложение, которое откроет файл.Примером может служить Finder.

Мне все еще неясно, какое решение лучше всего реализовать для этого.Сложность заключается в производительности и отображении значка приложения.

Во-первых, чтобы получить список приложений, я обнаружил только LSCopyApplicationURLsForURL ().

Основная сложность для меня сейчас заключается в получении значков приложений.,Все, что у меня есть, это URL-адреса (пути) к приложениям.Единственный способ получения значков, который я знаю, - создать объект CFBundle, а затем прочитать список приложений, чтобы получить данные значков.Но это, похоже, требует большого доступа к диску, и я мог бы предположить, что это будет весьма неэффективно, если приложение будет размещено на удаленном файловом сервере.

Я считаю, что существует также кэшированная база данных о приложениях, котораявключает в себя значки и отображаемые имена (без расширения) и тому подобное.Но где API для этого?

Примечание: приложение основано на углероде, но я могу использовать функции Какао (NS ...) при необходимости.Также будет приветствоваться поддержка 10.5, даже 10.4.

1 Ответ

0 голосов
/ 02 марта 2012

Хорошо. Я решил это в конце концов.

Теперь я использую функцию Carbon GetIconRefFromFileInfo (), которая все еще работает в Lion, хотя она помечена как устаревшая / устаревшая.

Я также пытался использовать QLThumbnailImageCreate (), но, как ни странно, это не дало мне никаких результатов. Понятия не имею, что я сделал не так.

Для приложений Какао можно использовать [[NSWorkspace sharedWorkspace] iconForFile: путь] (спасибо C. Grunenberg из DevonTechnologies за этот совет, где он используется с EasyFind).

...