1

我正在尝试使用这个出色的示例来实现将虚拟文件放入 Windows 资源管理器。但是,我被这个错误所困扰。在void System.Runtime.InteropServices.ComTypes.IDataObject.GetData(ref System.Runtime.InteropServices.ComTypes.FORMATETC formatetc, out System.Runtime.InteropServices.ComTypes.STGMEDIUM medium)第一次打电话给((System.Runtime.InteropServices.ComTypes.IDataObject)this).GetDataHere(ref formatetc, ref medium);我的时候,我得到了一个DV_E_FORMATETC错误。据我所知,传入的 FORMATETC 结构的所有元素都是有效的:cfFormat 是“Shell IDList Array”(-16141),ptd 是 0,dwAspect 是 DVASPECT_CONTENT,lindex 是 -1,tymed 是TYMED_HGLOBAL。我有点困惑怎么会有问题,因为这是由资源管理器生成的。

我对 COM 交互知之甚少,因此将不胜感激。

4

1 回答 1

3

重新实现了大约一半的 IDataObject 后,发现错误代码是由于 GetDataPresent() 中不支持“Shell IDList Array”引起的。

于 2010-05-28T17:18:28.297 回答