2010-12-30 12 views
4

Wie würde ich ein Array von Pfaden zu den ausgewählten Dateien im Finder abrufen?Pfad zur ausgewählten Datei im Finder abrufen

Ich habe gesucht, habe aber nur Links in Bezug auf AppleScript gefunden. Ich habe auch NSWorkspace und NSFileManager angesehen, aber ich habe nichts gefunden.

Antwort

5

Wenn es möglich ist, die Liste der ausgewählten Dateien in einem bestimmten Finder-Fenster mit AppleScript zu erhalten, können Sie wahrscheinlich Scripting Bridge in einer Cocoa-Anwendung als Schnittstelle zum Finder verwenden. Die Dokumentation von Apple,

Scripting Bridge ist ein Framework und eine Technologie, die Cocoa-Entwicklern die Steuerung und Kommunikation mit skriptfähigen Anwendungen erleichtert. Anstatt AppleScript-Skripts in Ihre Anwendung einzubinden oder sich mit den Komplexitäten des Sendens und Verarbeitens von Apple-Ereignissen zu befassen, können Sie Objective-C-Nachrichten einfach an ein Objekt senden, das eine Anwendung mit einer Skriptschnittstelle darstellt. Ihre Cocoa-Anwendung kann alles, was ein AppleScript-Skript kann, aber in Objective-C-Code, der in den übrigen Code Ihres Projekts integriert ist.

Es gibt keine Cocoa-Klasse, die den Finder oder genauer Finder-Fenster darstellt. Finder ist eine Anwendung und eine skriptfähige Anwendung, so dass Scripting Bridge der richtige Weg ist.

15

Erweiterung auf @ Bavarious des (richtige) Antwort, hier ist, wie ich habe die Auswahl aus dem Finder mit der Scripting-Brücke bekommen:

#import "Finder.h" //my copy is here: https://github.com/davedelong/BetterInfo/blob/master/Finder.h 

FinderApplication * finder = [SBApplication applicationWithBundleIdentifier:@"com.apple.finder"]; 
SBElementArray * selection = [[finder selection] get]; 

NSArray * items = [selection arrayByApplyingSelector:@selector(URL)]; 
for (NSString * item in items) { 
    NSURL * url = [NSURL URLWithString:item]; 
    NSLog(@"selected item url: %@", url); 
} 
+0

, das gut aussieht, wird versuchen, wenn ich an einem Computer bin zurück. – Joshua

+0

Netter Job, der es einführt. =) –

+0

Das funktioniert super, vielen Dank! – Joshua

Verwandte Themen