を使用して、pInvoke
C #のエクスプローラーシェルにコンテキストメニューを追加しています。IShellExtInit
IContextMenu
次のコードを使用して、コンテキストメニューに単一の項目を追加できます。
MENUITEMINFO mii = new MENUITEMINFO();
mii.cbSize = (uint)Marshal.SizeOf(mii);
mii.fMask = MIIM.MIIM_BITMAP | MIIM.MIIM_STRING | MIIM.MIIM_FTYPE | MIIM.MIIM_ID | MIIM.MIIM_STATE ;
mii.wID = idCmdFirst + increment;
mii.fType = MFT.MFT_STRING;
mii.dwTypeData = contextMenuItem.ItemText;
mii.fState = MFS.MFS_ENABLED;
mii.hbmpItem = this._pMenuBitmap;
NativeMethods.InsertMenuItem(hMenu, increment, true, ref mii)
私がやりたいのはメニューツリーを追加することです。つまり、新しく作成されたメニュー項目にサブメニューを追加します。私の最初の本能は使用することでした:
var subMenu = mii.hSubMenu;
...
NativeMethods.InsertMenuItem(subMenu,....)
ただし、サブメニューは常にゼロ値です。
誰か助けてもらえますか?