我正在使用pInvoke
,IShellExtInit
并将IContextMenu
上下文菜单添加到 C# 中的资源管理器外壳。
我可以使用以下代码将单个项目添加到上下文菜单:
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,....)
但子菜单始终为零值。
谁能帮我?