iconRef без fsspec - PullRequest
       21

iconRef без fsspec

0 голосов
/ 31 марта 2011

Я пытаюсь программно добавить элемент автозагрузки с помощью LSSharedFileListInsertItemURL (рекомендуется рекомендуемый метод в 10.5 в будущем)

Запрос вызова, но не требует значка для элемента. значок предоставлен iconRef.

iconRef может быть создан с использованием FSSpec для файла значков. Насколько я понимаю, FS Spec устарела в 10.4 и дальше.

Есть ли способ получить приложения .icns в iconRef, не прибегая к FSSpec, или мне просто нужно использовать NULL?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

В файле IconsCore.h указано, что следует использовать GetIconRefFromFileInfo:

extern OSStatus 
GetIconRefFromFileInfo(
  const FSRef *            inRef,
  UniCharCount             inFileNameLength,
  const UniChar *          inFileName,             /* can be NULL */
  FSCatalogInfoBitmap      inWhichInfo,
  const FSCatalogInfo *    inCatalogInfo,          /* can be NULL */
  IconServicesUsageFlags   inUsageFlags,
  IconRef *                outIconRef,
  SInt16 *                 outLabel)               /* can be NULL */

В комментариях к устаревшей функции GetIconRefFromFile сказано, что вы должны использовать это.Вы можете превратить ваш CFURL в FSRef, используя CFURLGetFSRef.Надеюсь, это поможет.

0 голосов
/ 01 апреля 2011

Насколько я понимаю, FS Spec устарела в 10.4 и дальше.

Дольше, чем это.

Есть ли способ получить приложения .icns в iconRef, не прибегая к FSSpec, или мне просто нужно использовать NULL?

Используйте функцию RegisterIconRefFromFSRef .

Передача NULL добавит элемент без иконки; Во IIRC будет отображаться значок документа, когда пользователь просматривает список элементов для входа в Системные настройки.

...