3

Finder サイドバーの [お気に入り] セクションに表示されるオブジェクトのパスを取得する必要があります (現在のユーザー用)。どうすればこれを達成できますか?

4

3 に答える 3

4

CocoaAPI自体はありません。LSSharedFileListAPIを使用します。APIは公開されていますが、ドキュメントはヘッダーファイル/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Headers/LSSharedFileList.hのみです。kLSSharedFileListFavoriteItems(そして多分kLSSharedFileListFavoriteVolumes)リストタイプが必要です。

于 2012-05-25T08:54:01.977 に答える
4

共有ファイル リストの取得は最初の部分にすぎません。パスを使用して実際の文字列オブジェクトを取得することもできます。以下は、ファインダー サイドバーのお気に入りセクションにある各オブジェクトのパスを取得できる小さなコード スニペットです。

UInt32 seed;
LSSharedFileListRef sflRef = LSSharedFileListCreate(NULL,
                                                    kLSSharedFileListFavoriteItems,
                                                    NULL);
CFArrayRef items = LSSharedFileListCopySnapshot( sflRef, &seed );
for( size_t i = 0; i < CFArrayGetCount(items); i++ )
{
    LSSharedFileListItemRef item = (LSSharedFileListItemRef)CFArrayGetValueAtIndex(items, i);
    if( !item )
        continue;
    CFURLRef outURL = NULL;
    LSSharedFileListItemResolve( item, kLSSharedFileListNoUserInteraction, (CFURLRef*) &outURL, NULL );
    if( !outURL )
        continue;
    //The actual path string of the item
    CFStringRef itemPath = CFURLCopyFileSystemPath(outURL,kCFURLPOSIXPathStyle);
    // TODO: Do whatever you want to do with your path here!!!!
    CFRelease(outURL);
    CFRelease(itemPath);
}
CFRelease(items);
CFRelease(sflRef);
于 2012-10-30T21:08:01.490 に答える
2

LSSharedFileListAPI(LaunchServices / LSSharedFileList.h。)を使用します

 LSSharedFileListRef favoriteItems = LSSharedFileListCreate(NULL,
                                                            kLSSharedFileListFavoriteItems, NULL);
于 2012-05-25T18:25:42.700 に答える