【问题标题】:Determine the source application of current pasteboard content确定当前粘贴板内容的源应用
【发布时间】:2013-05-01 19:35:13
【问题描述】:

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

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

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

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

【问题讨论】:

  • 几个 OSX 剪贴板管理器 = CopyLess。据我所知,这是唯一一个能做到这一点的应用程序。
  • 也许他们以某种方式使用 AppleScript?

标签: cocoa copy nspasteboard


【解决方案1】:

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

【讨论】:

  • 谢谢@Dustin。我最终得出了同样的结论。
【解决方案2】:

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

它的工作原理如下:

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

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

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

【讨论】:

  • 某人,向 1Password 开发人员展示一下 :) 我的意思是他们的菜单栏代理的 org.nspasteboard.source
  • 1pw 开发人员在上述邮件列表中。只需有人说服他们实施新协议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2011-05-13
  • 2015-07-24
  • 1970-01-01
相关资源
最近更新 更多