HDROP hDrop = NULL;
HANDLE hProcessHeap = ::GetProcessHeap();
if (NULL != hProcessHeap && ::HeapLock(hProcessHeap))
{
PROCESS_HEAP_ENTRY heapEntry = { 0 };
while(::HeapWalk(hProcessHeap, &heapEntry) != FALSE)
{
if ((heapEntry.wFlags & PROCESS_HEAP_ENTRY_BUSY) != 0)
{
HGLOBAL hGlobal = ::GlobalHandle(heapEntry.lpData);
// Assuming wParam is the WM_DROPFILES WPARAM
if ((((DWORD_PTR) hGlobal) & 0xFFFFFFFF) == (wParam & 0xFFFFFFFF))
{
hDrop = (HDROP) hGlobal; // We got it !!
break;
}
}
}
::HeapUnlock(hProcessHeap);
}