エクスプローラの右クリックにてファイル名を取得には,IShellExtInit の Initialize メソッドの第2パラメータが LPDATAOBJECT なので DragQueryFile を使って取得する.
(1つ選択時に取得する例)
HRES hres = E_FAIL;
FORMATETC fmte = {CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYPED_HGLOBAL };
STGMEDIUM medium;
if( FAILED(pDataObj->GetData(&fmte, &medium)) ) return E_FAIL;
if( DragQueryFile((HDROP)medium.hGlobal, (UINT)(-1), NULL, 0) == 1 ){
DragQueryFile((HDROP)medium.hGlobal, 0, 受け取るバッファ, サイズ);
hres = S_OK;
}
ReleaseStgMedium(&medium);
return hres;
(メニューの階層化は IContextMenu)
参照