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

时间:2015-08-11 07:28:04

标签: c# windows clipboard

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

是否可以像这样扩展剪贴板?我要感谢任何提示。

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

2 个答案:

答案 0 :(得分:0)

要使用多种格式,您可以使用DataObject作为值的容器,如下所示:

SET

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

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

GET

        IDataObject data_object = Clipboard.GetDataObject();

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

答案 1 :(得分:0)

我找到了以下解决方案:

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

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