高级剪贴板 - 存储更多数据 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) - 必须序列化! - 把你的价值观放在那里。很遗憾,此对象只能由您的应用程序识别。
我必须编写一个程序来扩展我的 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) - 必须序列化! - 把你的价值观放在那里。很遗憾,此对象只能由您的应用程序识别。