我想要的颜色的徽章文件,并根据取景器中的某些条件的文件夹,什么是在Mac OS X实现这一目标的方法10.6如何在OS X Finder中有条件地着色文件和文件夹?
我已经检查了这个问题:在取景器 这只是说说上下文菜单Finder Plugin in Snow Leopard
我甚至检查过:http://scplugin.tigris.org/即使他们没有在10.6中做彩色徽章,这是未决任务。
在此先感谢您的帮助
我想要的颜色的徽章文件,并根据取景器中的某些条件的文件夹,什么是在Mac OS X实现这一目标的方法10.6如何在OS X Finder中有条件地着色文件和文件夹?
我已经检查了这个问题:在取景器 这只是说说上下文菜单Finder Plugin in Snow Leopard
我甚至检查过:http://scplugin.tigris.org/即使他们没有在10.6中做彩色徽章,这是未决任务。
在此先感谢您的帮助
不幸的是,没有公开的API。您需要在Finder中注入代码并对其进行修补。
在10.6之前,通过仅使用InputManager
s就可以很容易地将代码注入Cocoa应用程序。这不再是事实,但您可以使用OSAX
来实现,请参阅this blog post。 SIMBL
自动执行此操作。
但你必须弄清楚Finder
里面发生了什么,看看如何修补东西。 要探索Finder
里面,F-Script anywhere将帮助你。
玩得开心,祝你好运!
10.6及更高版本中有一个公共API,请参阅我的答案。使用AppleScript是早期操作系统版本的解决方案。 – 2010-05-07 00:54:11
Rob Keniger:有一个公共API来设置来自另一个应用程序的标签颜色,但如果目标是让Finder自己完成工作,则需要SIMBL或mach_inject将代码注入Finder进程。 – 2010-05-07 00:58:15
感谢罗布,学习新的API总是很高兴。我想我需要更仔细地阅读API变化... – Yuji 2010-05-07 01:22:41
你需要applescript。因此,您可以使用脚本桥或NSApplescript在可可中编写Finder脚本。这里有一个简单的applescript来展示如何去做。
set a to (choose file)
tell application "Finder"
-- label colors
-- 0 none, 1 orange, 2 red, 3 yellow, 4 blue, 5 purple, 6 green, 7 grey
set label index of a to 6
end tell
您可以使用在Mac OS X 10.6中引入的URL资源API。
NSURL* fileURL = [NSURL fileURLWithPath:@"/Path/to/file"];
id labelValue = nil;
NSError* error;
if([fileURL getResourceValue:&labelValue forKey:NSURLLabelNumberKey error:&error])
{
NSLog(@"The label value is %@",labelValue);
}
else
{
NSLog(@"An error occurred: %@",[error localizedDescription]);
}
您可以同时使用NSURLLabelNumberKey
得到Finder的分配标签或NSURLLabelColorKey
的数量来获得实际的颜色。
您可以通过使用相应的方法来设置标签值:
- (BOOL)setResourceValue:(id)value forKey:(NSString *)key error:(NSError **)error
这不适用于10.9中引入的新标签,但是,是吗?我的意思是添加或删除任何数量的新自定义标签,因为它可能在Finder中。毕竟,LabelValue只是旧FinderLabel的索引。 – 2015-01-20 18:36:14
@ThomasTempelmann你可以使用'NSURLTagNamesKey'键。 – 2015-01-21 01:06:43
我觉得NSURLLabelNumberKey
值:
// 0 none, 1 grey, 2 green, 3 purple, 4 blue, 5 yellow, 6 red, 7 orange
任何人尚需一个答案在这里你去。
NSURL *fileURL = [NSURL fileURLWithPath:path_to_file];
NSError *error;
id labelColor = nil;
[fileURL setResourceValue:@2 forKey:NSURLLabelNumberKey error:&error]; //Set tag/label to green
[fileURL setResourceValue:@6 forKey:NSURLLabelNumberKey error:&error]; //Set tag/label to red
盖瑞特海德有正确的顺序。
// 0 none, 1 grey, 2 green, 3 purple, 4 blue, 5 yellow, 6 red, 7 orange
上述代码已经使用Xcode 4.6.3和OSX 10.9.2 Mavericks进行了测试。
对于投票结束的人,我相信用户正在尝试以编程方式执行此操作,所以这不是真正的superuser.com问题。问题不明确,但它被标记为“可可”。 – 2010-05-06 23:35:56
我使用图标服务得到了一个解决方案。将颜色作为图标和徽章图标加载到相应的文件或文件夹。 感谢您的帮助。 – 2010-07-14 13:16:31