/// <summary> /// This method will use the GetUIObjectOf method of IShellFolder to obtain the IDropTarget of a /// ShellItem. /// </summary> /// <param name="item">The item for which to obtain the IDropTarget</param> /// <param name="dropTargetPtr">A pointer to the returned IDropTarget</param> /// <returns>the IDropTarget from the ShellItem</returns> public static bool GetIDropTarget(ShellItem item, out IntPtr dropTargetPtr, out IDropTarget dropTarget) { ShellItem parent = item.ParentItem != null ? item.ParentItem : item; if (parent.ShellFolder.GetUIObjectOf( IntPtr.Zero, 1, new IntPtr[] { item.PIDLRel.Ptr }, ref NativeShellAPI.IID_IDropTarget, IntPtr.Zero, out dropTargetPtr) == NativeShellAPI.S_OK) { dropTarget = (IDropTarget)Marshal.GetTypedObjectForIUnknown(dropTargetPtr, typeof(IDropTarget)); return(true); } else { dropTarget = null; dropTargetPtr = IntPtr.Zero; return(false); } }
/// <summary> /// This method will use the GetUIObjectOf method of IShellFolder to obtain the IDropTarget of a /// ShellItem. /// </summary> /// <param name="item">The item for which to obtain the IDropTarget</param> /// <param name="dropTargetPtr">A pointer to the returned IDropTarget</param> /// <returns>the IDropTarget from the ShellItem</returns> public static bool GetIDropTarget(ShellItem item, out IntPtr dropTargetPtr, out IDropTarget dropTarget) { ShellItem parent = item.ParentItem != null ? item.ParentItem : item; if (parent.ShellFolder.GetUIObjectOf( IntPtr.Zero, 1, new IntPtr[] { item.PIDLRel.Ptr }, ref NativeShellAPI.IID_IDropTarget, IntPtr.Zero, out dropTargetPtr) == NativeShellAPI.S_OK) { dropTarget = (IDropTarget)Marshal.GetTypedObjectForIUnknown(dropTargetPtr, typeof(IDropTarget)); return true; } else { dropTarget = null; dropTargetPtr = IntPtr.Zero; return false; } }