1

我想使用 LSSharedFileList API 将自定义位置添加到 Finder 收藏夹边栏,如此处所述。但我需要为这个项目添加一个自定义图标。图标应该在IconRef类型中。我还没有找到办法。发现只提到了需要使用Icon Services的事实。但是怎么做?

4

1 回答 1

2

您可以使用Scplugin的此功能。

static IconRef IconRefFromIconFileNoCache(CFStringRef file)
{
    IconRef iconRef;
    IconFamilyHandle iconFamily;
    FSRef fileRef;
    CFURLRef url;
    Boolean ok;

    url = CFURLCreateWithFileSystemPath(NULL,file,kCFURLPOSIXPathStyle,false);
    if (!url)
        return 0;

    ok = CFURLGetFSRef(url,&fileRef);
    CFRelease(url);
    if (!ok)
        return 0;


    if (ReadIconFromFSRef(&fileRef, &iconFamily))
        return nil;

    iconRef = 0;
    HLock((Handle)iconFamily);
    GetIconRefFromIconFamilyPtr(*iconFamily,(**iconFamily).resourceSize,&iconRef);
    DisposeHandle((Handle)iconFamily);

    return iconRef;
}
于 2012-09-05T14:08:00.127 回答