2011-01-31 60 views
6

Tôi muốn thêm một mục mới vào thanh bên Trình tìm kiếm. Tôi phát hiện ra rằng Finder giữ danh sách các "địa điểm" trong `~/Library/Preferences/com.apple.sidebarlists.plist. Tôi đã có thể đọc tệp bằng API Carbon và thấy rằng mỗi mục có Tên, biểu tượng và bí danh.Thêm mục vào thanh công cụ Tìm kiếm

Sử dụng ứng dụng của bên thứ 3 như PlistEdit Pro Tôi có thể cập nhật bí danh. Câu hỏi của tôi là cách cập nhật bí danh bằng API Carbon. Đã không thể tìm thấy cách tạo bí danh sẽ mở trong Trình tìm kiếm. Dường như cả Dropbox và PlistEditor Pro đều có thể tìm đường.


Edit: Xem cập nhật 2015 câu trả lời

Trả lời

6

Hãy xem here:

Các Shared File List API mới để Dịch vụ Launch trong Mac OS X Leopard. API này cung cấp quyền truy cập vào một số loại các loại hệ thống tệp liên tục cho hệ thống tệp , chẳng hạn như tài liệu gần đây và ứng dụng, mục yêu thích và đăng nhập mục. Để biết chi tiết, hãy xem tệp giao diện mới LSSharedFileList.h.

Bạn muốn tìm khóa kLSSharedFileListFavoriteItems chính, xử lý các mục trong "Địa điểm" trong Thanh bên. Tôi đoán bạn có thể thử làm một cái gì đó tương tự như this, sử dụng LSSharedFileListCreate để tạo kLSSharedFileListFavoriteItems.

Hoặc bạn có thể sử dụng AppleScript posted here, đó sẽ là cách dễ dàng hơn, nhưng không phải là "Way Right" ©

+0

Cách AppleScript làm việc 4 tôi. thx – amitp

+0

@amitp Tuyệt vời! Tôi đoán có thể chọn câu trả lời của tôi như là giải pháp sau đó! :-) – Asmus

0

@Asmus: Theo mặc định 'command + T' là các phím tắt để thêm một thư mục để sidebar trong công cụ tìm. Bản ghi chỉ bởi u đang làm việc tốt khi phím tắt bàn phím 'command + T' được gán thủ công cho các tác vụ khác.

Các AppleScript thất bại nếu thực hiện sau khi cài đặt 'Command + T' là phím tắt để hiển thị máy tính để bàn khác của tôi trong sư tử OSX (10,7)

3

Cập nhật cho 2015

Tiêu đề LSSharedFileList cho biết điều này đã chuyển sang khuôn khổ CoreServices. Trong thực tế, nếu bạn Cmd-Shift-O (trong Xcode) và nhập LSSharedFileList, sau đó điều hướng đến kết quả duy nhất, bạn sẽ thấy trong thanh nhảy mà tiêu đề thực sự bây giờ chứa trong CoreServices.framework. Trong mọi trường hợp, khóa vẫn là kLSSharedFileListFavoriteItems.

Ví dụ:

+ (BOOL)appendFavoriteItemWithURL:(NSURL *)url { 

    // Pessimism ... 
    BOOL result = NO; 

    // Do we have a file URL? 
    if (url.isFileURL) { 

    // Ask CoreServices for the favorite items list 
    // (kLSSharedFileListFavoriteItems) 
    LSSharedFileListRef list = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); 
    if (list) { 

     // We've got the list, so try to append our item 
     // (use kLSSharedFileListItemBeforeFirst vs. 
     // kLSSharedFileListItemLast if desired) 
     LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(list, 
            kLSSharedFileListItemLast, 
            NULL, 
            NULL, 
            (__bridge CFURLRef)url, 
            NULL, 
            NULL); 

     // Did it work? 
     if (item) { 

     // Release the item and flag success 
     CFRelease(item); 
     result = YES; 

     } 

     // Release the list 
     CFRelease(list); 

    } 

    } 

    return result; 
} 

Cách sử dụng:

// Create the path to the favorite item to add 
NSString * itemPath = [@"~/Music" stringByExpandingTildeInPath]; 
NSURL * itemURL = [NSURL fileURLWithPath:itemPath]; 

// Insert the item 
[WhateverClassTheAboveFunctionIsIn appendFavoriteItemWithURL:itemURL]; 
+1

Tôi đã tạo Gist này để bao bọc chức năng này thành một danh mục NSURL đơn giản: https: //gist.github.com/jnozzi/817f3276c55dbb7025be –

+0

Up-bình chọn, tôi thích giải pháp này, nhưng nó là một sự xấu hổ rằng một số các chức năng này hiện nay không được chấp nhận vào ngày 10.11. Bất kỳ ý tưởng gì để sử dụng thay thế? –

+0

Không phải lúc này, Ben. Các phương pháp không dùng nữa có được chú thích trong tiêu đề không? Họ có thể đề nghị các lựa chọn thay thế. –

Các vấn đề liên quan