将文件复制到剪贴板

3

大家好!有人知道如何实现这个吗?我的意思是:如果我想将一个字符串放到剪贴板中,我该怎么做?

NSPasteboard *pboard = [NSPasteboard generalPasteboard];
[pboard declareTypes:[NSArray arrayWithObject:NSPasteboardTypeString] owner:self];
[pboard setString:@"aString" forType:NSPasteboardTypeString];

但是如果我想将文件放入剪贴板怎么办?我想找到一种方法,使用文件路径作为参数,然后能够通过上下文菜单或CMD-V在Finder中将该文件粘贴到任何地方。

有人可以帮帮我吗?

非常感谢!

3个回答

6
在经过数个小时的搜索后,我终于得到了一个简短的答案...
NSArray *fileList = [NSArray arrayWithObjects:filePath1, filePath2, nil];
NSPasteboard *pboard = [NSPasteboard generalPasteboard];
[pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil];
[pboard setPropertyList:fileList forType:NSFilenamesPboardType];

5

我快速地把这个东西组合在一起,但是已经使用CMD+V和上下文粘贴进行了测试。

NSURL *object = [[NSURL alloc] initFileURLWithPath:@"/Users/username/Desktop/main.png"];
NSPasteboard *pb = [NSPasteboard generalPasteboard];
[pb clearContents];

NSArray *objectsToCopy = [[NSArray alloc] initWithObjects:object, nil];
BOOL pasted = [pb writeObjects:objectsToCopy];

if(pasted) // paste was successful
    NSLog(@"pasted");

[object release];
[objectsToCopy release];
[pb release];

0

我没有尝试过这个,但据我理解文档,你所要做的(至少在OS X 10.6+中)就是这样:

NSURL *fileURL = [NSURL fileURLWithString:...];
NSPasteboard *pasteboard = [NSPasteboard generalPasteboard];
[pasteboard writeObjects:[NSArray arrayWithObject:fileURL]];

从剪贴板读取URL:

NSArray *urls = [pasteboard readObjectsForClasses:[NSArray arrayWithObject[NSURL class]]
                                          options:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSPasteboardURLReadingFileURLsOnlyKey]];
if ([urls count] == 1) {
    NSURL *myFileURL = [urls objectAtIndex:0];
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接