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

本文关键字:存储 Windows 数据 剪贴板 高级 | 更新日期: 2023-09-27 18:07:13

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

有可能像这样扩展剪贴板吗?我很感激你给我的任何提示。

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

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

要使用多种格式,可以使用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"或"分隔的文件名。

如果有人需要把几个值的相同类型可以定义自己的对象(类,结构体)-必须序列化!把你的价值观写在上面。不幸的是,这个对象只能被你的应用程序识别。