Копирование файла в буфер обмена - PullRequest
3 голосов
/ 30 апреля 2011

ребята!Кто-нибудь знает, как этого добиться?Я имею в виду: если я хочу поместить строку в буфер обмена, я делаю

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

, но что, если я хочу поместить файл в буфер обмена?Я хотел бы найти способ использовать путь к файлу в качестве параметра, а затем иметь возможность вставлять этот файл куда угодно в Finder через контекстное меню или CMD-V.

Кто-нибудь может мне помочь?

Большое спасибо!

Ответы [ 3 ]

5 голосов
/ 30 апреля 2011

Соедините это быстро, но протестируйте, используя CMD + V и Contextual Paste.

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];
5 голосов
/ 30 апреля 2011

После ЧАСОВ И ЧАСОВ И ЧАСОВ поисков, я наконец получил короткий ответ ...

NSArray *fileList = [NSArray arrayWithObjects:filePath1, filePath2, nil];
NSPasteboard *pboard = [NSPasteboard generalPasteboard];
[pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil];
[pboard setPropertyList:fileList forType:NSFilenamesPboardType];
0 голосов
/ 30 апреля 2011

Я не пробовал этого, но, как я понимаю, документация, все, что вам нужно сделать (по крайней мере, в 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];
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...