【问题标题】:Adding submenu's to explorer context menu将子菜单添加到资源管理器上下文菜单
【发布时间】:2015-07-11 22:02:48
【问题描述】:

我有一些基于this 的代码,它允许我为 Windows 资源管理器上下文菜单添加额外的功能。我已经能够成功地完成这项工作。

但是我现在想将多个项目添加到上下文菜单中,并将其添加到子菜单中。但是我似乎无法解决,首先如何将子菜单添加到其中,然后如何将额外的项目链接到该菜单中。

        // Use either InsertMenu or InsertMenuItem to add menu items.
        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 + IDM_DISPLAY;
        mii.fType = MFT.MFT_STRING;
        mii.dwTypeData = this.menuText;
        mii.fState = MFS.MFS_ENABLED;
        mii.hbmpItem = this.menuBmp;
        if (!NativeMethods.InsertMenuItem(hMenu, iMenu, true, ref mii))
        {
            return Marshal.GetHRForLastWin32Error();
        }

这是我当前必须添加项目的代码。不确定我需要如何修改子菜单,以及如何链接多个项目的点击操作。

有一个 shellExtLib 定义了大部分内容,看起来它只是从 user32.dll 导入内容。还定义了一个 InvokeCommand(),这是我实际的“采取行动”代码所在的位置。

【问题讨论】:

    标签: c# contextmenu submenu explorer


    【解决方案1】:

    这是我最终得到的解决方案:

        private MENUITEMINFO CreateSubMenu(string menuText, IntPtr menuIcon, IntPtr hSubMenu, bool isEnabled = true)
        {
            MENUITEMINFO subMenu = new MENUITEMINFO();
            subMenu.cbSize = (uint)Marshal.SizeOf(subMenu);
            subMenu.fMask = MIIM.MIIM_BITMAP | MIIM.MIIM_SUBMENU | MIIM.MIIM_STRING | MIIM.MIIM_FTYPE | MIIM.MIIM_STATE;
            subMenu.hSubMenu = hSubMenu;
            //subMenu.wID = itemID;
            subMenu.fType = MFT.MFT_STRING;
            subMenu.dwTypeData = menuText;
            subMenu.fState = isEnabled ? MFS.MFS_ENABLED : MFS.MFS_DISABLED;
            subMenu.hbmpItem = menuIcon;
            //itemID++;
            return subMenu;
        }
    

    结合:

        IntPtr hSubMenu = NativeMethods.CreatePopupMenu();
    
        [DllImport("user32.dll")]
        public static extern IntPtr CreatePopupMenu();
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-03
      • 2020-12-26
      相关资源
      最近更新 更多