mirror of
https://github.com/reactos/reactos.git
synced 2025-06-15 13:18:28 +00:00
[SHELL32] Implement Copy To Folder (retrial) (#3044)
- Add context menu item "Copy to &folder..." and implement the action. - Implement the "Copy to &folder..." menu item of "Edit" menu of Explorer. CORE-11132
This commit is contained in:
parent
535e262b78
commit
85fdcdf2cc
44 changed files with 659 additions and 1 deletions
|
@ -48,9 +48,9 @@ struct _StaticInvokeCommandMap_
|
|||
{ "delete", FCIDM_SHVIEW_DELETE},
|
||||
{ "properties", FCIDM_SHVIEW_PROPERTIES},
|
||||
{ "rename", FCIDM_SHVIEW_RENAME},
|
||||
{ "copyto", FCIDM_SHVIEW_COPYTO },
|
||||
};
|
||||
|
||||
|
||||
class CDefaultContextMenu :
|
||||
public CComObjectRootEx<CComMultiThreadModelNoCS>,
|
||||
public IContextMenu3,
|
||||
|
@ -95,6 +95,7 @@ class CDefaultContextMenu :
|
|||
HRESULT DoRename(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
HRESULT DoProperties(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
HRESULT DoCreateNewFolder(LPCMINVOKECOMMANDINFO lpici);
|
||||
HRESULT DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici);
|
||||
HRESULT InvokeShellExt(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
HRESULT InvokeRegVerb(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
DWORD BrowserFlagsFromVerb(LPCMINVOKECOMMANDINFO lpcmi, PStaticShellEntry pEntry);
|
||||
|
@ -893,6 +894,35 @@ CDefaultContextMenu::DoProperties(
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT
|
||||
CDefaultContextMenu::DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici)
|
||||
{
|
||||
HRESULT hr = E_FAIL;
|
||||
if (!m_pDataObj)
|
||||
{
|
||||
ERR("m_pDataObj is NULL\n");
|
||||
return hr;
|
||||
}
|
||||
|
||||
CComPtr<IContextMenu> pContextMenu;
|
||||
hr = SHCoCreateInstance(NULL, &CLSID_CopyToMenu, NULL, IID_PPV_ARG(IContextMenu, &pContextMenu));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
CComPtr<IShellExtInit> pInit;
|
||||
hr = pContextMenu->QueryInterface(IID_PPV_ARG(IShellExtInit, &pInit));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
hr = pInit->Initialize(m_pidlFolder, m_pDataObj, NULL);
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
lpici->lpVerb = "copyto";
|
||||
|
||||
return pContextMenu->InvokeCommand(lpici);
|
||||
}
|
||||
|
||||
// This code is taken from CNewMenu and should be shared between the 2 classes
|
||||
HRESULT
|
||||
CDefaultContextMenu::DoCreateNewFolder(
|
||||
|
@ -1248,6 +1278,9 @@ CDefaultContextMenu::InvokeCommand(
|
|||
case FCIDM_SHVIEW_NEWFOLDER:
|
||||
Result = DoCreateNewFolder(&LocalInvokeInfo);
|
||||
break;
|
||||
case FCIDM_SHVIEW_COPYTO:
|
||||
Result = DoCopyToFolder(&LocalInvokeInfo);
|
||||
break;
|
||||
default:
|
||||
Result = E_INVALIDARG;
|
||||
ERR("Unhandled Verb %xl\n", LOWORD(LocalInvokeInfo.lpVerb));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue