C++ 从剪贴板获取多个Outlook附件
我正在尝试从剪贴板中获取多个附件 当用户选择多个附件并将其放置在剪贴板(或拖动)中时,将创建一个C++ 从剪贴板获取多个Outlook附件,c++,outlook,clipboard,ole,idataobject,C++,Outlook,Clipboard,Ole,Idataobject,我正在尝试从剪贴板中获取多个附件 当用户选择多个附件并将其放置在剪贴板(或拖动)中时,将创建一个IDataObject,并将其放置在剪贴板中 我知道可以使用包含虚拟对象名称的CLIPFORMAT CFSTR_FILEDESCRIPTOR在IDataObject中找到文件名。另外,据我所知,文件内容是使用CLIPFORMAT CFSTR\u FILECONTENTS接收的。但是当我这样做的时候,我只得到一个文件,我不知道如何得到已经复制到剪贴板上的其他文件 我发现使用FORMATETC中的lind
IDataObject
,并将其放置在剪贴板中
我知道可以使用包含虚拟对象名称的CLIPFORMAT CFSTR_FILEDESCRIPTOR
在IDataObject
中找到文件名。另外,据我所知,文件内容是使用CLIPFORMAT CFSTR\u FILECONTENTS
接收的。但是当我这样做的时候,我只得到一个文件,我不知道如何得到已经复制到剪贴板上的其他文件
我发现使用FORMATETC
中的lindex
成员可以获取其他文件,但由于某些原因,它不起作用
有人能解释一下或举例说明我如何获得其他附件(首选C++)吗?请看一下。它在包装类OutlookDataObject
中使用IDataObject
,但它与剪贴板使用的接口相同。在C#中,您可以执行以下操作
//IDataObject包装器
OutlookDataObject=新的OutlookDataObject(Clipboard.GetDataObject());
//检索文件名
字符串[]文件名=(字符串[])dataObject.GetData(“FileGroupDescriptorW”);
this.label1.Text=“文件名:\n”+string.Join(“,”,文件名)+“\n”;
//写出文件内容
MemoryStream[]filestreams=(MemoryStream[])dataObject.GetData(“FileContents”);
this.label1.Text+=“文件:\n”;
对于(int fileIndex=0;fileIndex
查看<代码> Outlook DATAObjs< /Cord>包装器类,您应该能够在C++中实现类似的东西。