示例#1
0
        // Returns: number of menu items inserted.
        // Ignore Send To menus, shortcuts, defaultonly
        int IContextMenu.QueryContextMenu(HMenu hMenu, int iMenu, int idCmdFirst, int idCmdLast, CMF uFlags)
        {
            int id = 0;
            if ((uFlags & (CMF.CMF_VERBSONLY | CMF.CMF_DEFAULTONLY | CMF.CMF_NOVERBS)) == 0 ||
                (uFlags & CMF.CMF_EXPLORE) != 0)
            //if (IsFSItem(uFlags))
            {
                if (Helpers.DragQueryFile(m_hDrop, 0xffffffff, null, 0) > 1)
                    Helpers.InsertMenu(hMenu, iMenu, MFMENU.MF_STRING | MFMENU.MF_ENABLED, new IntPtr(idCmdFirst + 1), "&Rename ..."); // 1 for rename

                mFolders = Directory.GetDirectories(DropboxDir); // look into implementing caching folder list and hooking to file system watcher
                // Create the submenu popup, add folder items to it and then finally insert it into the explorer contextmenu.
                HMenu submenu = Helpers.CreatePopupMenu();
                Helpers.AppendMenu(submenu, MFMENU.MF_STRING | MFMENU.MF_ENABLED,
                    new IntPtr(idCmdFirst + 2), "Route"); // 2 for root dropbox folder.
                id = 2;
                for (int i = 0; i < mFolders.Length; i++)
                {
                    Helpers.AppendMenu(submenu, MFMENU.MF_STRING | MFMENU.MF_ENABLED, new IntPtr(idCmdFirst + ++id), mFolders[i].Substring(mFolders[i].LastIndexOf('\\') + 1));
                }

                Helpers.InsertMenu(hMenu, 5, MFMENU.MF_BYPOSITION | MFMENU.MF_POPUP | MFMENU.MF_ENABLED, submenu.handle, "Send to &Dropbox");
            }
            return id;
        }
示例#2
0
 internal static extern bool InsertMenu(HMenu hmenu, int position, MFMENU uflags, IntPtr uIDNewItemOrSubmenu, string text);
示例#3
0
 internal static extern bool InsertMenuItem(HMenu hmenu, uint uposition, uint uflags, ref MENUITEMINFO mii);
示例#4
0
 internal static extern bool AppendMenu(HMenu hmenu, MFMENU uflags, IntPtr uIDNewItemOrSubmenu, string text);