如何获取拖拽文件的路径??
小弟Hook了ITargetDrop的drop函数已成功,得到了IDataObject数据指针,在获取对应文件路径信息时,出现问题,跟踪发现 pIDataObject->GetData(&iFormat, &iMedium)没有返回,请大虾帮忙看下问题在哪?
部分代码
FORMATETC iFormat;
ZeroMemory(&iFormat, sizeof(FORMATETC));
STGMEDIUM iMedium;
ZeroMemory(&iMedium, sizeof(STGMEDIUM));
// data
iFormat.cfFormat = CF_HDROP; //类型
iFormat.dwAspect = DVASPECT_CONTENT;
iFormat.lindex = -1;
iFormat.tymed = TYMED_HGLOBAL; //内存对象
HRESULT hRes = pIDataObject->GetData(&iFormat, &iMedium);
if(FAILED(hRes))
{
Log("错误格式");
return hRes;
}
// we have the data, get it
HDROP hDrop = (HDROP)::GlobalLock(iMedium.hGlobal);
DWORD iLen = ::GlobalSize(iMedium.hGlobal);
TCHAR filenames[200];
int count = ::DragQueryFile(hDrop,0xFFFFFFFF,filenames, sizeof(filenames));
for(int i = 0; i < count; i++)
{
DragQueryFile(hDrop, i, filenames, sizeof(filenames));
Log(filenames);
}