例えばファイル検索ソフトやら画像ビューワーなんかで、表示しているファイルをFinderに表示させたいことがあります。そのための方法を説明します。
改版履歴
NSWorkspaceにselectFile : inFileViewerRootedAtPath :という専用のメソッドが用意されています。
書式 : - (BOOL) selectFile : (NSString *) fullPath inFileViewerRootedAtPath : (NSString *) rootFullPath 入力 : selectFile : Finderに表示させて選択させるファイルのフルパス : rootFullPath : Finderに表示させるウィンドウのフルパス 出力 : RETURN : YES (=成功)、NO (=失敗)
表示させて選択したいファイルのパスと、ウィンドウのパスを指定します。当然ながらウィンドウのパスはフォルダーやボリュームのパスになります。ただし、selectFileが指定されている場合は、rootFullPathはnilに指定しても構いません。ファイルを含んでいるフォルダーがデフォルト値として使われます。selectFileをnilにしておくと、ウィンドウを開くけれど何も選択しないという状態になります。
#import <Cocoa/Cocoa.h> int main( int argc, const char *argv[] ) { NSAutoreleasePool *ap = [ [ NSAutoreleasePool alloc ] init ]; BOOL bResult; { ///// SHOW IN FINDER ///// NSString *filePath = [ @"~/Library/Preferences/com.apple.dock.plist" stringByExpandingTildeInPath ]; NSString *windowPath = [ @"~/Library" stringByExpandingTildeInPath ]; bResult = [ [ NSWorkspace sharedWorkspace ] selectFile : filePath inFileViewerRootedAtPath : windowPath ]; NSLog( ( bResult ? @"YES" : @"NO" ) ); } [ ap release ]; return( 0 ); }