1
我正在使用pInvoke
,IShellExtInit
和IContextMenu
向C#中的資源管理器外殼添加上下文菜單。如何在C#中的Windows shell上下文菜單中創建子菜單?
我可以使用下面的代碼添加到右鍵菜單中的單個項目:
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,....)
但子菜單總是零值。
任何人都可以幫助我嗎?
它不建議使用託管代碼編寫外殼擴展:http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx –
@StephenEllis難道你曾經實現這個解決方案,我已經得到我的上下文菜單顯示,但現在我想弄清楚如何處理點擊。子菜單不會調用invoke命令方法。 – blak3r
@ blak3r我確實。我不得不再次看看代碼,因爲我不記得遇到點擊回調的問題。 –