Подтвердить что ты не робот

Как получить значок пользователя Mac?

Используя Objective-C и Cocoa, кто-нибудь знает, как получить значок для пользовательского компьютера (тот, который отображается в разделе "Устройства" и "Сеть" в Finder)? Не значок жесткого диска, а фактический для пользовательского устройства. Он варьируется от значка MacBook до значка Mac Pro до значка монитора монитора голубого экрана Windows.

Я пробовал вещи по следующим строкам:

NSImage *icon = [[NSWorkspace sharedWorkspace] 
                  iconForFileType: NSFileTypeForHFSTypeCode(kComputerIcon)];

Но это просто возвращает все тот же значок все время, очевидно. Я также пробовал метод iconForFile:, но я не знаю, какой путь к файлу использовать в качестве параметра. Может ли кто-нибудь указать мне в правильном направлении?

4b9b3361

Ответ 1

[NSImage imageNamed: NSImageNameComputer]

Это вернет значок текущего компьютера

Ответ 2

Другое место для поиска значков:

/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources

Вы можете создавать объекты NSImage с файлами там:

[[NSImage alloc] initWithContentsOfFile:@"/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/com.apple.macbook-unibody.icns"];

Скорее всего, не рекомендуется жестко закодировать такое значение, поскольку Apple может изменить расположение значков. Существует файл с именем IconsCore.h, который содержит много других константных значений, таких как 'kToolbarDesktopFolderIcon', которые можно использовать следующим образом:

[[NSWorkspace sharedWorkspace] iconForFileType: NSFileTypeForHFSTypeCode(kToolbarDesktopFolderIcon)];

Я считаю, что эти константы работают только в Snow Leopard.

Ответ 3

Если вы ищете какие-либо другие значки системы, проверьте проект Apple sample под названием "IconCollection". http://developer.apple.com/mac/library/samplecode/IconCollection/listing5.html

Образец поставляется с файлом plist, который имеет имена и коды для довольно многих значков системы, к которым можно получить доступ, используя

OSType code = UTGetOSTypeFromString((CFStringRef)codeStr);
NSImage *picture = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(code)];

где codeStr - это строковый код для значка, представленного в icons.plist