Windows Shell Context Menu

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • 95ulisse
    New Member
    • Mar 2010
    • 1

    Windows Shell Context Menu

    Hello everyone,
    I'm new to the forum and this is only my second post, so I apologize in advance for any mistakes.

    This is my situation:
    I'm using Microsoft Visual Studio 2008 with .Net Framework 3.5.
    I'm developing an extension of the Windows Shell Context menu, and I did it, but I have a problem:
    when my menu is invoked on the links (*.lnk), it doesn't work and prevents the upper voices.
    This only occurs on Vista and Seven, not on XP.
    This is the IContextMenu.Qu eryContextMenu:

    Code:
    int IContextMenu.QueryContextMenu(uint hmenu,
                  uint iMenu,
                  int idCmdFirst,
                  int idCmdLast,
                  uint uFlags)
                {
    
                    //Clicked file
                    StringBuilder sb = new StringBuilder(1024);
                    DllImports.DragQueryFile(m_hDrop, 0, sb, sb.Capacity + 1);
    
                    //If it's a link (*.lnk) exits
                    //Maybe the mistake is here, but I don't know!
                    if (new FileInfo(sb.ToString()).Extension == ".lnk") { return 1; }
    
                    // Adds the menus
                    for (int i = 0; i < Menus.Length; i++)
                    {
    
                        //Updates the ID
                        Menus[i].MenuItemInfo.wID += idCmdFirst;
    
                        //Verifies if the menu has some submenus
                        if (Menus[i].SubMenu != null) { PopolateSubMenu(Menus[i], idCmdFirst); }
    
                        //Adds the menu
                        DllImports.InsertMenuItem(hmenu, Menus[i].Position - 1, 1, ref Menus[i].MenuItemInfo);
    
                        //Adds the icon
                        if (Menus[i].Image != null) {
                            System.Drawing.Bitmap Bmp = Menus[i].Image;
                            DllImports.SetMenuItemBitmaps((IntPtr)hmenu, (IntPtr)(Menus[i].Position - 1), 0x400, Bmp.GetHbitmap(), Bmp.GetHbitmap());
                        }
    
                    }
    
                    // Returns the number of added menu item
                    return (int)(NumeroMenu + 1);
    
                }
    I don't know what to do!
    Please help me!

    Thank you in advance for your help!

    PS: I apologize for my bad English, too: I'm Italian!
Working...