私に役立ついくつかのことを見つけることができました。デフォルトでは、ユーザーがドラッグしない限り、ツールバー項目はファインダ ウィンドウに追加されません。項目をプログラムでファインダ ウィンドウ ツールバーに追加する方法を見つけることができませんでした。
ファインダーのサイドバーにアイテムを追加
// Create a reference to the shared file list.
LSSharedFileListRef favoriteItems = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL);
// Check Items
if (favoriteItems)
{
// Get CFURL for Application
CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:path];
// Add Item
LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(favoriteItems, kLSSharedFileListItemBeforeFirst, NULL, NULL, url, NULL, NULL);
// Release
if (item)
CFRelease(item);
}
// Release
if (favoriteItems != NULL)
CFRelease(favoriteItems);
サイドバーからアイテムを削除するコード
// Create a reference to the shared file list.
LSSharedFileListRef favoriteItems = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL);
// Check Items
if (favoriteItems)
{
// Get Login Items
CFArrayRef favoriteItemsArray = LSSharedFileListCopySnapshot(favoriteItems, NULL);
// Loop Through Items
for (id item in (__bridge NSArray *)favoriteItemsArray)
{
// Get Item Ref
LSSharedFileListItemRef itemRef = (__bridge LSSharedFileListItemRef)item;
// Get Item URL
CFURLRef itemURL = LSSharedFileListItemCopyResolvedURL(itemRef, kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes, NULL);
if (itemURL != NULL)
{
// If Item Matches Remove It
if ([[(__bridge NSURL *)itemURL path] hasPrefix:path])
LSSharedFileListItemRemove(favoriteItems, itemRef);
// Release
if (itemURL != NULL)
CFRelease(itemURL);
}
}
// Release
if (favoriteItemsArray != NULL)
CFRelease(favoriteItemsArray);
}
// Release
if (favoriteItems != NULL)
CFRelease(favoriteItems);
Finder でディレクトリをリロードする
// Reload Finder (change the word directory to file if updating file)
NSAppleScript * update = [[NSAppleScript alloc] initWithSource:[NSString stringWithFormat:@"tell application \"Finder\" to update POSIX directory \"%@\"",path]];
[update executeAndReturnError:nil];
拡張機能を有効にするコード (バンドル ID)
system("pluginkit -e use -i com.mycompany.finderExt")
拡張機能を無効にするコード (バンドル ID)
system("pluginkit -e ignore -i com.mycompany.finderExt")