0

我继续创建一个 OS X 应用程序并注册一个服务(即 Finder 中文件上的右键单击菜单选项),一切正常,除了当我右键单击时操作系统似乎没有向我的应用程序发送清晰的文件路径在 Finder 中创建一个文件,然后选择我的“使用 MyProgram 打开”自定义选项。

我的接收处理程序:

- (void)doSomething:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {
NSString *pboardString = [pboard stringForType:NSStringPboardType];
NSLog(@"I hope the file path is: %@", pboardString);
}

使用上面的代码,pboardString 实际上会包含一些奇怪的东西,比如:“file:///.file/id=6562758.3327676”

这可能是垃圾,或者可以翻译成有用的东西;我不知道。如果我尝试将粘贴板对象打印为数组,我会得到像 <NSPasteboardItem: 0x103b37d90> 这样的十六进制结果。

我不确定这是否是服务属性的问题(https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/SysServices/Articles/properties.html),但如果有人知道我的我想念我会很感激指导..

4

1 回答 1

1

您可以通过查看NSPasteboard的 propertyListForType 来访问文件路径:

并使用 NSFilenamesPboardType

- (void)doSomething:(NSPasteboard *)pboard userData:(NSString *)userData error:(NSString **)error {

    NSArray *files = [pboard propertyListForType:NSFilenamesPboardType];
    NSLog(@"I hope the file path is files: %@", files);

}

您应该阅读我上面链接到的文档

于 2013-09-21T19:03:02.583 回答