2010-05-27 53 views
1

我试图使用this excellent example实现将虚拟文件放入Windows资源管理器。但是,我受到这个错误的阻碍。在第一次拨打((System.Runtime.InteropServices.ComTypes.IDataObject)this).GetDataHere(ref formatetc, ref medium);时,向内部拨打void System.Runtime.InteropServices.ComTypes.IDataObject.GetData(ref System.Runtime.InteropServices.ComTypes.FORMATETC formatetc, out System.Runtime.InteropServices.ComTypes.STGMEDIUM medium),我收到一个DV_E_FORMATETC错误。据我所知,所有传入的FORMATETC结构元素都是有效的:cfFormat是“Shell IDList Array”(-16141),ptd是0,dwAspect是DVASPECT_CONTENT,lindex是-1,tymed是TYMED_HGLOBAL。无论如何,我有点困惑,因为这是由探险家产生的。拖放到资源管理器导致无效FORMATETC(DV_E_FORMATETC)错误

我对COM交互知之甚少,所以任何帮助都将不胜感激。

回答

3

重新实现IDataObject的大约一半后,事实证明,错误代码是由于不支持GetDataPresent()中的“Shell IDList Array”造成的。

相关问题