我必须编写一个程序来扩展我的Windows剪贴板,并允许在复制/粘贴文件时存储更多数据。它必须像这样工作:我正在处理文件,并将其粘贴到例如Outlook中,并将其识别为文件,这通常在您执行此操作时发生(剪贴板存储路径)。但是,当我将此文件粘贴到例如记事本时,我希望它粘贴文件名。
是否可以像这样扩展剪贴板?我要感谢任何提示。
[EDIT] FileDropList仅包含具有完整文件名(路径)的字符串集合。我需要在其中存储更多数据。
答案 0 :(得分:0)
要使用多种格式,您可以使用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);
答案 1 :(得分:0)
我找到了以下解决方案:
可以向DataObject添加多个数据,但它们需要是不同的类型。因此,我添加了一个列表,其中包含要复制的文件和一个长字符串,其中我添加了以“\ n”或“”分隔的文件名。
如果有人需要放置几个相同类型的值可以定义自己的对象(class,struct) - 必须序列化! - 把你的价值观放在那里。不幸的是,此对象只能由您的应用识别。