【问题标题】:How to use NSPasteboard to transfer data between applications (using contextual menus)如何使用 NSPasteboard 在应用程序之间传输数据(使用上下文菜单)
【发布时间】:2011-11-13 13:04:03
【问题描述】:

“NSPasteboard 对象将数据传入和传出粘贴板服务器。该服务器由所有正在运行的应用程序共享。它包含用户剪切或复制的数据,以及 一个应用程序想要传输到的其他数据另一个。NSPasteboard 对象是应用程序与服务器和所有粘贴板操作的唯一接口。

NSPasteboard 对象还用于在每个应用程序的“服务”菜单中列出的应用程序和服务提供商之间传输数据。拖动粘贴板(NSDragPboard)用于传输用户正在拖动的数据。”

我在苹果的 NSPasteboard 文档中找到了这个。到目前为止,我只知道如何使用粘贴板进行简单的复制粘贴。我感兴趣的是如何使用上下文菜单而不是拖放来通过粘贴板服务器在应用程序之间传输用于非复制粘贴目的的数据。例如,如果用户右键单击一个单词并单击上下文菜单中的“在字典中查找”,则该单词随后(可能)通过粘贴板发送到 Dictionary 应用程序。

有人可以演示一个概念验证应用程序,展示如何访问粘贴板服务器中存储用户使用“在字典中查找”的单词的数据吗?

【问题讨论】:

    标签: menu contextmenu nspasteboard pasteboard core-services


    【解决方案1】:

    我们不需要找到“在字典中查找”粘贴板。 (如果有的话)。但是,如果您想通过粘贴板在您的应用程序之间传输数据,那么有一个 NSPasteboard 类方法非常适合我。

    + (NSPasteboard *)pasteboardWithName:(NSString *)name
    

    只需为两个应用使用相同的名称,您就可以在它们之间传输数据。完成后请务必在此粘贴板上致电- releaseGlobally

    【讨论】:

    • 感谢您的回答。如果两个应用程序都是我的,您的方法将起作用。但我只是想知道.. 是否可以从另一个应用程序“拦截”粘贴板数据?例如,如果我想创建一个系统范围的服务来跟踪用户在任何应用程序中何时使用“查找字典”,我该怎么做?
    • 您只需要知道使用的粘贴板的名称,然后您就可以轮询它的 -changeCount。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2013-09-10
    • 2019-02-15
    • 2015-06-16
    相关资源
    最近更新 更多