المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : InsertMenuItem WinAPI problem



C# Programming
02-11-2010, 12:52 AM
Hi !

I'm working shell context menu on 64 pc.
I rebuild app under x64 pc.

I want add menu item to windows context menu.Registery is OK and windows explorer find my dll.

But InsertMenuItem WinAPI function not working!


MENUITEMINFO mii = new MENUITEMINFO();
mii.cbSize =(uint)Marshal.SizeOf(typeof(MENUITEMINFO));// 0x30;
mii.fMask = (uint)MIIM.TYPE | (uint)MIIM.STATE |(uint)MIIM.SUBMENU;
mii.fType =(uint) MF.STRING;
mii.wID = idCmdFirst + num;
mii.dwTypeData = "My menu text";
mii.fState =(uint)MF.ENABLED;
mii.cch = (uint)mii.dwTypeData.Length;

InsertMenuItem(hmenu, iMenu+1, true, ref mii);


My defenition :


[DllImport("user32.dll")]
public static extern bool InsertMenuItem(uint hMenu, uint uItem, bool fByPosition,[In] ref MENUITEMINFO lpmii);


[StructLayout(LayoutKind.Sequential)]
public struct MENUITEMINFO
{
public uint cbSize;
public uint fMask;
public uint fType;
public uint fState;
public int wID;
public int hSubMenu;
public int hbmpChecked;
public int hbmpUnchecked;
public int dwItemData;
public String dwTypeData;
public uint cch;
public int hbmpItem;
}



Please help me. (I know writing shell menu under .net is not good,but i very want see it).

Thanks.We are haven't bug,just temporarily undecided problems.