9

Objective-Cを使用して別のアプリケーションからアイコンを取得するにはどうすればよいですか?

私はこれまでこれを試しましたが、それはただ戻りますnull

NSURL *path = [NSURL URLWithString:@"/Applications/Calculator.app"];

NSLog(@"%@", path);

NSImage *image = (__bridge NSImage *)(QLThumbnailImageCreate(kCFAllocatorDefault, (__bridge CFURLRef)(path), CGSizeMake(100, 100), (__bridge CFDictionaryRef)(@{(NSString *)kQLThumbnailOptionIconModeKey: @NO})));

NSLog(@"%@", image);
4

3 に答える 3

22

たとえば、NSWorkspaceを使用できます

NSImage *image = [[NSWorkspace sharedWorkspace] iconForFile:path];

bundleIdパスを知る代わりにアプリを使用したい場合は、最初にこれを行うことができます

path = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:bundleIdentifier];
于 2012-08-28T19:54:14.343 に答える
3

アプリケーションのアイコン ファイルは、通常、Info.plist の CFBundleIconFile キーの下に定義されています。アイコンのファイル名を取得すると、バンドルの Resources ディレクトリ (path-to-anApplication/Contents/Resources/) からこのアイコンを取得できます。

Info.plist の内容を取得するには、NSDictionary に直接読み込むか (dictionaryWithContentsOfFile: を使用)、アプリケーションのバンドル オブジェクトから取得します (例: [[NSBundle bundleWithPath:path-to-anApp] infoDictionary]).

アイコン ファイルは、CFBundleIconFile キーの値になります (つまり、iconFile = [infoDictionary valueForKey:@"CFBundleIconFile"]そのパスは、path-to-anApplication/Contents/Resources/iconFile になります)。

于 2012-08-28T20:09:46.340 に答える
3

[[NSWorkspace sharedWorkspace] iconForFile:pathToFile] を探していると思います

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html#//apple_ref/doc/uid/20000391-iconForFile_

于 2012-08-28T19:56:39.530 に答える