5

我正在自动执行复制命令,以每秒左右在粘贴板上放置一些文本 - 不幸的是,这是我访问文本的唯一方法,它位于另一个应用程序中。复制后,我访问粘贴板文本并进行处理。

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

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

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

任何简单有效的想法都非常感谢!

4

2 回答 2

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;
}
于 2010-05-21T14:26:52.843 回答
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"
)
于 2014-05-25T10:47:00.023 回答