我正在开发一个 windows-explorer 类型的应用程序,因为我试图调用 IContextMenu 操作,如复制、粘贴、属性、删除等,但只有复制和剪切操作没有完成,而它们正在成功调用。
请看下面的场景;
我将 CMINVOKECOMMANDINFO.lpVerb 设置为相应的命令字符串(“复制”、“粘贴”、“属性”等)。
CMINVOKECOMMANDINFO cmici={ sizeof(CMINVOKECOMMANDINFO) };
ZeroMemory( &cmici, sizeof(CMINVOKECOMMANDINFO));
cmici.cbSize = sizeof(CMINVOKECOMMANDINFO);
cmici.fMask=0;
cmici.hwnd=m_pOwnerWnd!=NULL ? m_pOwnerWnd->GetSafeHwnd() : NULL;
cmici.lpVerb= "copy";
cmici.lpParameters= NULL;
cmici.lpDirectory=NULL;
cmici.nShow=SW_SHOWNORMAL;
cmici.dwHotKey=0;
cmici.hIcon=NULL;
获取 ITEMIDLIST 的上下文菜单;
HRESULT hResult = lpParentFolder->GetUIObjectOf(
m_pOwnerWnd!=NULL ? m_pOwnerWnd->GetSafeHwnd() : NULL, 1,
(const struct _ITEMIDLIST**)&(lpRelativeIDL), IID_IContextMenu, 0,
(LPVOID*)&lpcm)
查询上下文菜单;
hResult=lpcm->QueryContextMenu(hMenu,0,1,0x7fff,dwFlags);
最后调用;
hResult=lpcm->InvokeCommand(&cmici);
::DestroyMenu(hMenu);
lpcm->Release();
if(FAILED(hResult))
return FALSE;
return TRUE;
命令删除、属性、粘贴等工作正常,除了复制和剪切
请问有人可以在这方面帮助我吗?
谢谢。