6

来自 AppStore 的几个 OSX 剪贴板管理器显示了确定复制到剪贴板的内容的源应用程序的能力。

我正在编写一些简单的剪贴板观察者,并希望在内容附近显示源应用程序图标,存储在一般的 NSPasteboard 中。我想知道如何实现这一点。

据我所知,除了数据类型和数据本身之外,NSPasteboard 不提供任何其他信息。

也许有一些事件或通知知道触发了“复制”命令?还是其他一些方法?

4

2 回答 2

6

我相信 CopyLess 和 Alfred 2(也支持这一点)的工作方式是他们有一个计时器来检查剪贴板的变化。当他们在剪贴板上看到更改时,他们会获取活动应用程序并将该应用程序与更改相关联。这可能不是一个万无一失的方法,但在大多数情况下应该可以工作。

于 2013-05-01T23:28:08.747 回答
2

现在有一个新的准标准(截至 2016 年 12 月),请参阅http://nspasteboard.org

它的工作原理如下:

  • 默认情况下,记录剪贴板内容的程序应假定最前面的应用程序是填充剪贴板的应用程序(诚然,只有在设置剪贴板内容时程序已经运行时才有效)。

  • 但是如果有一个剪贴板风格(种类) type org.nspasteboard.source,那么这个风格的内容应该是填充剪贴板的应用程序的 Bundle ID。

(这是一个准标准,因为它已经被 nspasteboard.org 管理的邮件列表中感兴趣的成员讨论和同意)

于 2017-01-04T15:43:57.377 回答