私の小さなプロジェクトのユーザーに、ファインダー ウィンドウを開いて 1 つまたは複数のオブジェクトを選択するように求めています。また、なしを選択することもできます。この場合、すべてのアイテムが使用されます。
私のアプリでは、最初のウィンドウを確認し、選択したアイテム (ファイルまたはフォルダー) を取得しようとしましたCode1を参照してください。
*一部の変数はグローバルで .h で宣言され、一部は単にリセットされることに注意してください。*
これは、ユーザーがファインダー内をいじっていない場合は問題なく機能します。しかし、彼は私のアプリをだますためにいくつかのことを行うことができます. たとえば、ファインダ ウィンドウを開いて、いくつかのファイルを選択できます。その後、彼はデスクトップをクリックして (ファインダ ウィンドウでの選択は正しいままです)、デスクトップで直接項目を選択できます。彼が私のアプリに戻ると、開いているウィンドウを正しく認識しますが、デスクトップのアイテムを選択したアイテムとして使用しますが、これは私が望んでいるものではありません。私がやりたいことは、選択したアイテムを最前面のウィンドウに表示したいのですが、どうすればそれができるのかわかりません。
手がかりはありますか?
コード1
- (void)applicationWillBecomeActive:(NSNotification *)notification {
[self psProgressWrapper:FALSE :_spinningWheel :spinningWheelText ] ;
NSUInteger *countArray = 0;
asResult = @""; //this variable holds the path to the folder the frontmost window belongs to
selectionFlag = FALSE; //reset
allFilesFlag = FALSE; //reset
//Get first finder window
FinderApplication * finder = [SBApplication applicationWithBundleIdentifier:@"com.apple.finder" ] ;
SBElementArray *windows = [finder FinderWindows ] ;
if([windows count] >0) {
FinderWindow *theWindow = [windows objectAtIndex:0 ] ;
asResult = [theWindow name ] ; //the name of the first window
//setting a texfield in the GUI to text and color green
[_errMessage setStringValue:asResult ] ;
[_errMessage setTextColor: myGreenColor ] ;
SBElementArray * selection = [[finder selection] get ] ;
countArray = [selection count ] ;
if(countArray == 0) {
atFilesOriginal = (NSMutableArray*) [self checkForSelection:asResult :TRUE ] ;
}
else if(countArray > 0) {
atFilesOriginal = (NSMutableArray*) [selection arrayByApplyingSelector:@selector(name) ] ;
}
else {
asResult = @"NoWin";
}
}
else {
asResult = @"NoWin";
[self checkFinderWindowType ] ;
}
[self refreshDRPopsWrapper] ;
[self psProgressFlag:TRUE Wheel:_spinningWheel Text:spinningWheelText];
[self goConvertBtnWrapper ] ;
[self checkFinderWindowType ] ;
}