12

使用 Objective-C 和 Cocoa,有谁知道如何获取用户计算机的图标(在 Finder 的“设备”和“网络”下显示的图标)?不是硬盘图标,而是用户设备的实际图标。它的范围从 MacBook 图标到 Mac Pro 图标再到 Windows 蓝屏死机监视器图标。

我尝试了以下几方面的东西:

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

但这显然总是返回相同的图标。我也尝试过该iconForFile:方法,但我不知道用作参数的文件路径。谁能指出我正确的方向?

4

3 回答 3

28
[NSImage imageNamed: NSImageNameComputer]

这将返回当前计算机的图标

于 2009-09-04T23:19:55.633 回答
7

另一个寻找图标的地方:

/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 中有效。

于 2009-09-05T18:32:16.587 回答
5

如果您正在寻找任何其他系统图标,请查看名为“IconCollection”的 Apple 示例项目。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 中提供的图标的字符串代码

于 2009-09-05T15:52:39.483 回答