public static extern int RegisterDragDrop( IntPtr hWnd, Raccoom.Win32.IDropTarget IdropTgt);
/// <summary> /// Do we have to add a dummy node (+ sign) /// </summary> protected virtual bool IsFolderWithChilds(Raccoom.Win32.ShellItem fi) { return _showAllShellObjects || (fi.IsFileSystem && fi.IsFolder && !fi.IsBrowsable); }
protected virtual TreeNodePath CreateTreeNode(System.Windows.Forms.TreeNodeCollection parentCollection, TreeNodePath parentNode, Raccoom.Win32.ShellItem shellItem) { if (shellItem == null) throw new ArgumentNullException("shellItem"); // TreeNodePath node = CreateTreeNode(parentCollection, parentNode, shellItem.Text, shellItem.Path, !shellItem.IsFolder, shellItem.HasSubfolder, !shellItem.IsFileSystem); node.ImageIndex = shellItem.ImageIndex; node.SelectedImageIndex = shellItem.SelectedImageIndex; node.Tag = shellItem; // shellItem.ShellItemUpdated += delegate(object sender, EventArgs e) { node.Text = shellItem.Text; node.ImageIndex = shellItem.ImageIndex; node.SelectedImageIndex = shellItem.SelectedImageIndex; }; return node; }
/// <summary> /// Popluates the MyComputer node /// </summary> /// <param name="folderItem"></param> /// <param name="parentCollection"></param> /// <param name="helper"></param> protected virtual void FillMyComputer(Raccoom.Win32.ShellItem folderItem, System.Windows.Forms.TreeNodeCollection parentCollection, TreeViewFolderBrowserNodeFactory helper) { _rootCollection = parentCollection; // get wmi logical disk's if we have to System.IO.DriveInfo driveInfo; // folderItem.Expand(true, true, System.IntPtr.Zero); // foreach (Raccoom.Win32.ShellItem fi in folderItem.SubFolders) { // only File System shell objects ? if (!_showAllShellObjects && !fi.IsFileSystem) continue; // if (DriveTypes != DriveTypes.All && fi.IsDisk) { driveInfo = new System.IO.DriveInfo(fi.Path); // switch (driveInfo.DriveType) { case System.IO.DriveType.CDRom: if ((DriveTypes & DriveTypes.CompactDisc) == 0) continue; break; case System.IO.DriveType.Fixed: if ((DriveTypes & DriveTypes.LocalDisk) == 0) continue; break; case System.IO.DriveType.Network: if ((DriveTypes & DriveTypes.NetworkDrive) == 0) continue; break; case System.IO.DriveType.NoRootDirectory: if ((DriveTypes & DriveTypes.NoRootDirectory) == 0) continue; break; case System.IO.DriveType.Ram: if ((DriveTypes & DriveTypes.RAMDisk) == 0) continue; break; case System.IO.DriveType.Removable: if ((DriveTypes & DriveTypes.RemovableDisk) == 0) continue; break; case System.IO.DriveType.Unknown: if ((DriveTypes & DriveTypes.NoRootDirectory) == 0) continue; break; } } // create new node TreeNodePath node = CreateTreeNode(parentCollection, null, fi); } }
public static bool GetIDropTarget(ShellItem item, out IntPtr dropTargetPtr, out Raccoom.Win32.IDropTarget dropTarget) { ShellItem parent = item.ParentItem != null ? item.ParentItem : item; if (parent.ShellFolder.GetUIObjectOf( IntPtr.Zero, 1, new IntPtr[] { item.PIDLRel.Ptr }, ref ShellAPI.IID_IDropTarget, IntPtr.Zero, out dropTargetPtr) == ShellAPI.S_OK) { dropTarget = (Raccoom.Win32.IDropTarget)Marshal.GetTypedObjectForIUnknown(dropTargetPtr, typeof(Raccoom.Win32.IDropTarget)); return true; } else { dropTarget = null; dropTargetPtr = IntPtr.Zero; return false; } }