環境はWinXP+VC7です。
Explorerでコピーしたファイルを、
デスクトップに貼り付けたいと思っています。
下記のコードでデスクトップのメニューを表示しても、
貼り付けはDisable状態になっていて選択できません。
選択できるようになれば、メニューを表示させずに
InvokeCommand()で実行しようかなと考えましたが、
選択できるようになりません。
void Cxxx::ShellContMenu()
{
HRESULT hr;
LPSHELLFOLDER lpSF = NULL;
LPSHELLVIEW lpSV = NULL;
LPCONTEXTMENU lpCM;
HMENU hMenu = NULL;
CPoint pt;
hr = SHGetDesktopFolder(&lpSF);
if (FAILED(hr))
goto ERR;
hr = lpSF->CreateViewObject(m_hWnd, IID_IShellView, (LPVOID*)&lpSV);
if (FAILED(hr))
goto ERR;
hr = lpSV->GetItemObject(SVGIO_BACKGROUND,
IID_IContextMenu, (LPVOID*)&lpCM);
if (FAILED(hr))
goto ERR;
hMenu = ::CreatePopupMenu();
if (!hMenu)
goto ERR;
hr = lpCM->QueryContextMenu(hMenu, 0, 1, 0x7FFF, CMF_NORMAL);
if (FAILED(hr))
goto ERR;
::GetCursorPos(&pt);
int nCommand = ::TrackPopupMenu(hMenu,
TPM_LEFTALIGN | TPM_RETURNCMD | TPM_RIGHTBUTTON,
pt.x, pt.y, 0, m_hWnd, NULL);
(以下省略)
}
質問させていただきたいことは、2点あります。
1.上記のコードで、メニューの貼り付けを選択できるようにする方法。
2.Explorerなどでファイルを選択して右クリックメニュー、
またはCtrl+Cにてコピーしたものを貼り付けるための方法。
ご存知の方がおられましたらご教示ください。
よろしくお願いいたします。