高级剪贴板 - 存储更多数据 C#/Windows

Advanced Clipboard - more data stored C#/Windows

我必须编写一个程序来扩展我的 Windows 剪贴板并允许在 copy/paste 文件的同时存储更多数据。它必须像这样工作:我正在处理一个文件,并将其粘贴到例如 Outlook 中,它会将其识别为一个文件,这通常在您执行此操作时发生(剪贴板存储路径)。但是,当我将此文件粘贴到记事本时,我希望它粘贴文件名。

是否可以像这样扩展剪贴板?如果有任何提示,我将不胜感激。

[编辑] FileDropList 仅包含具有完整文件名(路径)的字符串集合。我需要在其中存储更多数据。

要使用多种格式,您可以像这样使用 DataObject 作为您的值的容器:

设置

        var obj1 = new DataObject(DataFormats.Text,Yourobj.asText());
        Clipboard.SetDataObject(obj1);

        var obj2 = new DataObject(DataFormats.Html,Yourobj.asHtml());
        Clipboard.SetDataObject(obj2);

得到

        IDataObject data_object = Clipboard.GetDataObject();

        if (data_object.GetDataPresent(DataFormats.Html))
           var yourHTML =data_object.GetData(DataFormats.Html);

我找到了以下解决方案:

可以向一个 DataObject 添加多个数据,但它们必须是不同的类型。因此,我添加了一个包含要复制的文件的列表和一个长字符串,其中我添加了用“\n”或“”分隔的文件名。

如果有人需要放置多个相同类型的值可以定义自己的对象(class, struct) - 必须序列化! - 把你的价值观放在那里。很遗憾,此对象只能由您的应用程序识别。