ScriptingBridge Finder POSIX路径

时间:2010-06-19 04:53:53

标签: objective-c finder scripting-bridge

是否可以使用Scripting Bridge框架将POSIX路径或目标设置到最前面的窗口?

我正在使用

FinderApplication *theFinder = [SBApplication aplicationWithBundleIdentifier:@"com.apple.Finder";

但我在“Finder.h”中找不到任何可行的方法。

3 个答案:

答案 0 :(得分:4)

这可能就是您使用ScriptingBridge和NSURL后的情况

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

SBElementArray *windows =  [finder windows ]; // array of finder windows
NSArray *targetArray = [windows arrayByApplyingSelector:@selector(target)];// array of targets of the windows

//gets the first object from the targetArray,gets its URL, and converts it to a posix path
NSString * newURLString =   [[NSURL URLWithString: (id) [[targetArray   objectAtIndex:0]URL]] path];

NSLog(@"newURLString   %@  ", newURLString);

答案 1 :(得分:2)

通过appscript's ASTranslate工具运行drawonward的代码给了我:

#import "FNGlue/FNGlue.h"
FNApplication *finder = [FNApplication applicationWithName: @"Finder"];
FNReference *ref = [[[finder windows] at: 1] target];
FNGetCommand *cmd = [[ref get] requestedType: [ASConstant alias]];
id result = [cmd send];

结果将是ASAlias实例;使用 - [ASAlias path]获取POSIX路径。

你不能在SB中使用原始Apple事件代码,因为这是Apple工程师忘记/没有费心加入SB less than stellar API的功能之一。

答案 2 :(得分:0)

我没有使用过ScriptingBridge。作为NSAppleScript的一部分,它将是:

get POSIX path of (target of window 1 as alias)

希望这会有所帮助。我认为POSIX部分来自StandardAdditions ScriptingAddition,而不是Finder本身。