mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 08:52:57 +00:00
[SHELL32] Implement DelegateExecute verb handler and basic IShellItemArray (#6972)
This commit is contained in:
parent
01fbf25dab
commit
0d10fb814f
9 changed files with 265 additions and 84 deletions
|
@ -1304,7 +1304,17 @@ CDefaultContextMenu::InvokeRegVerb(
|
|||
if (lpcmi->fMask & CMIC_MASK_PTINVOKE)
|
||||
pPtl = (POINTL*)&lpcmi->ptInvoke;
|
||||
|
||||
// TODO: IExecuteCommand
|
||||
CComPtr<IExecuteCommand> pEC;
|
||||
hr = SHELL_GetRegCLSID(VerbKey, L"command", L"DelegateExecute", clsid);
|
||||
if (SUCCEEDED(hr))
|
||||
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_PPV_ARG(IExecuteCommand, &pEC));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
CComPtr<IPropertyBag> pPB;
|
||||
SHCreatePropertyBagOnRegKey(VerbKey, NULL, STGM_READ, IID_PPV_ARG(IPropertyBag, &pPB));
|
||||
return InvokeIExecuteCommandWithDataObject(pEC, pEntry->Verb.GetString(), pPB, m_pDataObj,
|
||||
lpcmi, static_cast<IContextMenu*>(this));
|
||||
}
|
||||
|
||||
CComPtr<IDropTarget> pDT;
|
||||
hr = SHELL_GetRegCLSID(VerbKey, L"DropTarget", L"CLSID", clsid);
|
||||
|
@ -1312,7 +1322,10 @@ CDefaultContextMenu::InvokeRegVerb(
|
|||
hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_PPV_ARG(IDropTarget, &pDT));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
CComPtr<IPropertyBag> pPB;
|
||||
SHCreatePropertyBagOnRegKey(VerbKey, NULL, STGM_READ, IID_PPV_ARG(IPropertyBag, &pPB));
|
||||
IUnknown_SetSite(pDT, static_cast<IContextMenu*>(this));
|
||||
IUnknown_InitializeCommand(pDT, pEntry->Verb.GetString(), pPB);
|
||||
hr = SHSimulateDrop(pDT, m_pDataObj, KeyState, pPtl, NULL);
|
||||
IUnknown_SetSite(pDT, NULL);
|
||||
return hr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue