2010-05-21 116 views
4

我自动执行复制命令,每隔一秒左右在粘贴板上放置一些文本 - 不幸的是,这是我访问另一个应用程序中文本的唯一方式。复制后,我可以访问粘贴板文本并对其进行处理。如何检查NSPasteboard是否已更新?

有时,当没有选择任何内容时会发送复制命令 - 例如在textEdit中,如果光标位于行的末尾(而不是突出显示某些文本)并且您点击复制,系统会发出嘟嘟声,因为没有选择复制。粘贴板不更新并保留其以前的数据。

我想不出一个创造性的方式来识别发生这种情况。如果我发送复制命令并且不更新粘贴板,那么我可以访问的粘贴板上是否有任何类型的时间戳,以确认是否已经捕获了某些内容?

我在看changeCount,但我不确定那是什么,而且文档对我没有多大帮助 - 红鲱鱼?

任何简单而有效的想法感激地收到!

回答

11

我不相信有这方面的通知,但是你可以轮询纸板。

pasteboard = [[NSPasteboard generalPasteboard] retain]; 
[NSTimer scheduledTimerWithTimeInterval:0.25 target:self 
           selector:@selector(pollPasteboard:) 
           userInfo:nil repeats:YES]; 

- (void)pollPasteboard:(NSTimer *)timer { 
    NSInteger currentChangeCount = [pasteboard changeCount]; 
    if (currentChangeCount == previousChangeCount) 
     return; 
    NSLog(@"Pasteboard updated: %@", [pasteboard types]); 
    previousChangeCount = currentChangeCount; 
} 
+0

+1这是做到这一点的方法。 – 2010-05-21 14:42:54

+2

除非绝对肯定,否则请避免投票。这在各方面都是低效的。 – bbum 2010-05-21 23:02:32

+4

我不同意这不是有效的,但你会怎么做呢? – 2010-05-21 23:11:33

0

还是一样的JPEG文件从桌面多次复制,你会看到不完全与

NSLog(@"Pasteboard updated: %@", [pasteboard types]);

有时工作:

2014-05-25 12:14:20.014 PB1[65771:303] (
    "public.file-url", 
    "CorePasteboardFlavorType 0x6675726C", 
    "dyn.ah62d4rv4gu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn", 
    NSFilenamesPboardType, 
    "dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu", 
    "Apple URL pasteboard type" 
) 

有时:

2014-05-25 12:14:25.482 PB1[65771:303] (
    "public.file-url", 
    "CorePasteboardFlavorType 0x6675726C", 
    "dyn.ah62d4rv4gu8y6y4grf0gn5xbrzw1gydcr7u1e3cytf2gn", 
    NSFilenamesPboardType, 
    "dyn.ah62d4rv4gu8yc6durvwwaznwmuuha2pxsvw0e55bsmwca7d3sbwu", 
    "Apple URL pasteboard type", 
    "com.apple.icns", 
    "CorePasteboardFlavorType 0x69636E73", 
    fccc, 
    "public.utf16-external-plain-text", 
    "CorePasteboardFlavorType 0x75743136", 
    "public.utf8-plain-text", 
    NSStringPboardType, 
    "public.tiff", 
    "NeXT TIFF v4.0 pasteboard type" 
) 
+0

这是调试信息,而不是答案。 – iblamefish 2014-05-25 11:04:29

+0

但是NSStringPboardType并不总是显示。我如何获得名称的JPEG文件,而无需解析NSFilenamesPboardType – 2014-05-25 11:44:48