2009-09-04 36 views
12

使用Objective-C和Cocoa,沒有人知道如何獲取用戶計算機的圖標(在Finder的「設備」和「網絡」下顯示的圖標)?不是硬盤圖標,是用戶設備的實際圖標。它的範圍從MacBook圖標到Mac Pro圖標到死亡監視器圖標的Windows藍屏。如何獲取用戶Mac的圖標?

我試過的東西大致如下:

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

但這只是返回相同的圖標的時候,效果顯着。我也嘗試了iconForFile:方法,但我不知道要用作參數的文件路徑。任何人都可以指引我正確的方向嗎?

+3

+1至少自己嘗試一下。 – Abizern 2009-09-05 08:29:30

回答

27
[NSImage imageNamed: NSImageNameComputer] 

這一點,如果你正在尋找任何其他系統圖標檢查蘋果的名爲「IconCollection」樣本項目將返回的當前計算機

+3

輝煌!是否有這些「命名」圖像的其他字符串或常量列表? – 2009-09-04 23:32:35

+1

可以在NSImage文檔中找到命名圖像的完整列表。此外,對於記錄,您應該使用常量NSImageNameComputer而不是文字@「NSComputer」,因爲常量是實際公開的公共API。 – 2009-09-04 23:51:00

+2

將文字改爲常量。這裏列出的所有常量http://tinyurl.com/m5qcl5 – cocoafan 2009-09-05 00:36:37

5

的圖標。 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提供的圖標的串碼

+1

現在位於https://developer.apple.com/library/mac/#samplecode/IconCollection/Introduction/Intro.html – 2012-05-18 16:18:09

7

另一個地方去尋找圖標:

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

您可以創建NSImage中與文件對象有像這個:

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

這可能不推薦硬編碼價值li但是,由於蘋果可能會更改圖標的位置。有一個名爲IconsCore.h包含許多其他的恆定值,例如,可以如下使用「kToolbarDesktopFolderIcon」文件:

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

我相信這些常量只有在雪豹工作,雖然。