Cocoa 确定当前粘贴板内容的源应用程序

Cocoa 确定当前粘贴板内容的源应用程序,cocoa,copy,nspasteboard,Cocoa,Copy,Nspasteboard,AppStore中的几个OSX剪贴板管理器能够确定复制到剪贴板的内容的源应用程序 我正在编写一些简单的剪贴板观察器,并希望在内容附近显示源应用程序图标,该图标存储在通用NSPasteboard中。我想知道如何才能做到这一点 就我所见,NSPasteboard除了数据类型和数据本身之外,不提供任何其他信息 可能有一些事件或通知需要知道“复制”命令已触发?或者其他一些方式?我认为无拷贝和Alfred 2(也支持此功能)的工作方式是,它们有一个计时器,用于检查剪贴板的更改。当他们在剪贴板上看到更改时,

AppStore中的几个OSX剪贴板管理器能够确定复制到剪贴板的内容的源应用程序

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

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


可能有一些事件或通知需要知道“复制”命令已触发?或者其他一些方式?

我认为无拷贝和Alfred 2(也支持此功能)的工作方式是,它们有一个计时器,用于检查剪贴板的更改。当他们在剪贴板上看到更改时,他们将获得活动应用程序并将该应用程序与更改关联。这可能不是一个万无一失的方法,但在大多数情况下都应该有效。

现在有一个新的准标准(截至2016年12月),请参见

其工作原理如下:

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

  • 但如果存在类型为
    org.nspasteboard.source
    的剪贴板风格(种类),则此风格的内容应为填充剪贴板的应用程序的捆绑ID


(这是一个准标准,因为它已经由nspasteboard.org管理的邮件列表的相关成员讨论并达成一致)

几个OSX剪贴板管理员=无版权。就我所知,这是唯一一款能做到这一点的应用程序。也许他们不知何故使用了AppleScript?谢谢@Dustin。我得出了同样的结论。有人,向1Password开发者展示一下:)我是指他们的菜单栏代理的
org.nspasteboard.source
。1pw开发者在上述邮件列表中。有人只要说服他们实施新的协议就行了。