Ejemplo n.º 1
0
 private void ReleaseAll()
 {
     if (null != this._oContextMenu)
     {
         Marshal.ReleaseComObject(this._oContextMenu);
         this._oContextMenu = null;
     }
     if (null != this._oContextMenu2)
     {
         Marshal.ReleaseComObject(this._oContextMenu2);
         this._oContextMenu2 = null;
     }
     if (null != this._oContextMenu3)
     {
         Marshal.ReleaseComObject(this._oContextMenu3);
         this._oContextMenu3 = null;
     }
     if (null != this._oDesktopFolder)
     {
         Marshal.ReleaseComObject(this._oDesktopFolder);
         this._oDesktopFolder = null;
     }
     if (null != this._oParentFolder)
     {
         Marshal.ReleaseComObject(this._oParentFolder);
         this._oParentFolder = null;
     }
     if (null != this._arrPIDLs)
     {
         this.FreePIDLs(this._arrPIDLs);
         this._arrPIDLs = null;
     }
 }
Ejemplo n.º 2
0
 private void InvokeCommand(ShellContextMenu.IContextMenu oContextMenu, uint nCmd, string strFolder, Point pointInvoke)
 {
     ShellContextMenu.CMINVOKECOMMANDINFOEX cMINVOKECOMMANDINFOEX = default(ShellContextMenu.CMINVOKECOMMANDINFOEX);
     cMINVOKECOMMANDINFOEX.cbSize       = ShellContextMenu.cbInvokeCommand;
     cMINVOKECOMMANDINFOEX.lpVerb       = (IntPtr)((long)((ulong)(nCmd - 1u)));
     cMINVOKECOMMANDINFOEX.lpDirectory  = strFolder;
     cMINVOKECOMMANDINFOEX.lpVerbW      = (IntPtr)((long)((ulong)(nCmd - 1u)));
     cMINVOKECOMMANDINFOEX.lpDirectoryW = strFolder;
     cMINVOKECOMMANDINFOEX.fMask        = (ShellContextMenu.CMIC.UNICODE | ShellContextMenu.CMIC.PTINVOKE | (((Control.ModifierKeys & Keys.Control) != Keys.None) ? ShellContextMenu.CMIC.CONTROL_DOWN : ((ShellContextMenu.CMIC) 0u)) | (((Control.ModifierKeys & Keys.Shift) != Keys.None) ? ShellContextMenu.CMIC.SHIFT_DOWN : ((ShellContextMenu.CMIC) 0u)));
     cMINVOKECOMMANDINFOEX.ptInvoke     = new ShellContextMenu.POINT(pointInvoke.X, pointInvoke.Y);
     cMINVOKECOMMANDINFOEX.nShow        = ShellContextMenu.SW.SHOWNORMAL;
     oContextMenu.InvokeCommand(ref cMINVOKECOMMANDINFOEX);
 }
Ejemplo n.º 3
0
        private bool GetContextMenuInterfaces(ShellContextMenu.IShellFolder oParentFolder, IntPtr[] arrPIDLs, out IntPtr ctxMenuPtr)
        {
            int  uIObjectOf = oParentFolder.GetUIObjectOf(IntPtr.Zero, (uint)arrPIDLs.Length, arrPIDLs, ref ShellContextMenu.IID_IContextMenu, IntPtr.Zero, out ctxMenuPtr);
            bool result;

            if (0 == uIObjectOf)
            {
                this._oContextMenu = (ShellContextMenu.IContextMenu)Marshal.GetTypedObjectForIUnknown(ctxMenuPtr, typeof(ShellContextMenu.IContextMenu));
                result             = true;
            }
            else
            {
                ctxMenuPtr         = IntPtr.Zero;
                this._oContextMenu = null;
                result             = false;
            }
            return(result);
        }