ScriptingBridge Finder POSIX путь - PullRequest
4 голосов
/ 19 июня 2010

возможно ли получить путь POSIX или цель к переднему окну, используя инфраструктуру Scripting Bridge?

Я использую

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

но я не могу найти ничего в "Finder.h", которое могло бы работать.

Ответы [ 3 ]

4 голосов
/ 19 июня 2010

Это может быть то, что вы после использования 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);
2 голосов
/ 19 июня 2010

Выполнение кода drawonward через appscript's ASTranslate дает мне следующее:

#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 меньше, чем звездный API .

0 голосов
/ 19 июня 2010

Я не использовал ScriptingBridge.Как часть NSAppleScript это будет:

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

Надеюсь, это поможет.Я думаю, что часть POSIX взята из StandardAdditions ScriptingAddition, а не из самого Finder.

...