Tôi muốn thay đổi biểu tượng âm lượng theo chương trình cho hệ thống tệp xếp chồng được triển khai bằng cách sử dụng OSXFUSE (trước đây là MacFUSE). Biểu tượng cần phản ánh trạng thái của hệ thống tệp được gắn kết.Có thể lập trình thay đổi biểu tượng âm lượng trên ổ đĩa gắn trên Mac OS X không?
Cách tiếp cận mà tôi đang cố gắng làm việc là ánh xạ các yêu cầu cho /.VolumeIcon.icns đến biểu tượng thích hợp trong gói ứng dụng. Sau đó gửi thông báo thay đổi đến hệ thống tệp cho đường dẫn thực tế (đường dẫn) và đường dẫn gắn kết (mountPath).
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: @"/Volumes"];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: [mountPath stringByDeletingLastPathComponent]];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: mountPath];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: [path stringByDeletingLastPathComponent]];
[[NSWorkspace sharedWorkspace] noteFileSystemChanged: path];
FNNotifyByPath([[[mountPath stringByDeletingLastPathComponent] dataUsingEncoding:NSUTF8StringEncoding] bytes], kFNDirectoryModifiedMessage, kNilOptions);
FNNotifyByPath([[[path stringByDeletingLastPathComponent] dataUsingEncoding:NSUTF8StringEncoding] bytes], kFNDirectoryModifiedMessage, kNilOptions);
FNNotifyByPath([[@"/Volumes" dataUsingEncoding:NSUTF8StringEncoding] bytes], kFNDirectoryModifiedMessage, kNilOptions);
Bước qua debugger tôi có thể thấy mã này bị trúng nhưng mã để lập bản đồ /.VolumeIcon.icns được gọi không thường xuyên và không bao giờ để đáp ứng với các thông báo này.
Các bạn đã thử xóa tập tin .DS_Store ẩn? –
Tôi không chắc chắn điều đó sẽ ảnh hưởng đến biểu tượng. Nhưng trong mọi trường hợp tôi không muốn đi xuống con đường này vì nó có nghĩa là xóa các cài đặt hiển thị thư mục do người dùng chọn. –
@Aditya - Tôi đã thử đề xuất của bạn nhưng xóa tệp .DS_Store không ảnh hưởng đến biểu tượng âm lượng được hiển thị trên màn hình. –