2010-05-21 98 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