Shellでの貼り付け方法 – プログラミング – Home

通知
すべてクリア

Shellでの貼り付け方法


ひろ
 ひろ
(@ひろ)
ゲスト
結合: 24年前
投稿: 149
 

環境は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にてコピーしたものを貼り付けるための方法。

ご存知の方がおられましたらご教示ください。
よろしくお願いいたします。


引用解決済
トピックタグ

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました