iconRef без fsspec

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

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

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

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

2 ответа

Решение

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

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

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

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

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

Файл 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, Надеюсь, это поможет.

Другие вопросы по тегам