Элемент контекстного меню папки & quot; вставить & quot; и & quot; вставить ярлык & quot; отключен

Я выбираю контекстное меню папки, используя IShellView :: GetItemObject (используя флаг: SVGIO_BACKGROUND).

Контекстное меню заполнено нормально (так же, как окно проводника заполняется для папки, когда мы делаем правый клик в свободном / пустом месте).

Проблема в пункте меню моего контекстного меню вставить а также Вставить ярлык отключены, пока есть запись в буфере обмена. (Также контекстное меню windows для папки, показывающей их как включенные).

GetObjectContextMenu(const LPSHELLFOLDER lpParentFolder,
const LPITEMIDLIST lpRelativeIDL, DWORD dwFlags, bool fIsEmptySpace) const {
LPCONTEXTMENU lpcm;
LPSHELLVIEW lpsv;

HRESULT hResult= S_FALSE;
LPSHELLFOLDER lpFolder = NULL;

hResult = lpParentFolder->
CreateViewObject(m_pOwnerWnd!=NULL ? m_pOwnerWnd->GetSafeHwnd() : NULL, IID_IShellView,
(void**)&lpsv);

lpParentFolder->AddRef();

if(FAILED(hResult))
return NULL;

hResult = lpsv->GetItemObject(SVGIO_BACKGROUND, IID_IContextMenu, (LPVOID*)&g_pcm);

if(FAILED(hResult))
return NULL;

if(SUCCEEDED(g_pcm->QueryInterface(IID_IContextMenu2, (void**)&g_pcm2)))
{
if(!SUCCEEDED(g_pcm->QueryInterface(IID_IContextMenu3, (void**)&g_pcm3)))
{
//&g_pcm3 = NULL;
}
}
else
{
//&g_pcm2 = NULL;
}

HMENU hMenu=::CreatePopupMenu();
if(hMenu==NULL)
{
return NULL;
}

hResult=g_pcm->QueryContextMenu(hMenu,0,1,0x7fff, dwFlags );
if(FAILED(hResult))
{
return NULL;
}
char _name[100] = {0};

if(fIsEmptySpace)
lpsv->Release();

g_pcm->Release();

if( lpFolder != NULL)
{
lpFolder->Release();
}
return hMenu;
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …