2009-09-04 25 views
12

Al usar Objective-C y Cocoa, ¿alguien sabe cómo obtener el icono de la computadora de un usuario (el que se muestra en "Dispositivos" y "Red" en el Buscador)? No es el icono del disco duro, el real para el dispositivo de un usuario. Se extiende desde un icono de MacBook al icono de Mac Pro a una pantalla azul de Windows del icono del monitor de la muerte.¿Cómo obtengo el ícono de la Mac del usuario?

He tratado de cosas a lo largo de las siguientes líneas:

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

Pero eso sólo devuelve el mismo icono todo el tiempo, obviamente. También probé el método iconForFile: pero no conozco la ruta del archivo para usar como parámetro. ¿Alguien puede señalarme en la dirección correcta?

+3

+1 para al menos intentarlo usted primero. – Abizern

Respuesta

27
[NSImage imageNamed: NSImageNameComputer] 

Esto devolverá el icono de la actual equipo

+3

¡genial! ¿Hay una lista de otras cadenas o constantes para estas imágenes "nombradas"? –

+1

La lista completa de imágenes con nombre se puede encontrar en la documentación de NSImage. Además, para el registro, probablemente debería usar la constante NSImageNameComputer en lugar del literal @ "NSComputer", ya que la constante es la que en realidad está expuesta como API pública. –

+2

cambió el literal a la constante. Aquí la lista de todas las constantes http://tinyurl.com/m5qcl5 – cocoafan

5

Si buscas cualquier otro sistema de iconos echa un vistazo a proyecto de ejemplo de Apple llamado "iconcollection". http://developer.apple.com/mac/library/samplecode/IconCollection/listing5.html

El ejemplo viene con un archivo plist que tiene los nombres y códigos de algunos iconos del sistema a los que se puede acceder usando;

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

donde codeStr es el código de cadena para el icono proporcionada en icons.plist

+1

Ahora en https://developer.apple.com/library/mac/#samplecode/IconCollection/Introduction/Intro.html –

7

Otro lugar para buscar iconos:

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

se pueden crear objetos NSImage con los archivos allí como esto:

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

Probablemente no sea recomendable codificar el valor li ke eso, sin embargo, ya que Apple puede cambiar las ubicaciones de los iconos. Hay un archivo llamado IconsCore.h que contiene muchos otros valores constantes como 'kToolbarDesktopFolderIcon' que puede ser utilizado de la siguiente manera:

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

Creo que estas constantes sólo funcionan en Snow Leopard, sin embargo.

Cuestiones relacionadas