internal ShellItem(ShellBrowser browser, IntPtr pidl, IntPtr shellFolderPtr) { this.browser = browser; this.shellFolderPtr = shellFolderPtr; this.shellFolder = (IShellFolder)Marshal.GetTypedObjectForIUnknown(shellFolderPtr, typeof(IShellFolder)); subFiles = new ShellItemCollection(this); subFolders = new ShellItemCollection(this); pidlRel = new PIDL(pidl, false); text = "Desktop"; path = "Desktop"; SetAttributesDesktop(this); ShellAPI.SHFILEINFO info = new ShellAPI.SHFILEINFO(); ShellAPI.SHGetFileInfo(pidlRel.Ptr, 0, ref info, ShellAPI.cbFileInfo, ShellAPI.SHGFI.PIDL | ShellAPI.SHGFI.TYPENAME | ShellAPI.SHGFI.SYSICONINDEX); type = info.szTypeName; ShellImageList.SetIconIndex(this, info.iIcon, false); ShellImageList.SetIconIndex(this, info.iIcon, true); sortFlag = 1; }
public ShellBrowserUpdater(ShellBrowser br) { this.br = br; CreateHandle(new CreateParams()); ShellAPI.SHChangeNotifyEntry entry = new ShellAPI.SHChangeNotifyEntry(); entry.pIdl = br.DesktopItem.PIDLRel.Ptr; entry.Recursively = true; notifyId = RegisterShellNotify(this.Handle, entry); }
internal ShellItem(ShellBrowser browser, ShellItem parentItem, IntPtr pidl) { this.browser = browser; this.parentItem = parentItem; pidlRel = new PIDL(pidl, false); SetText(this); SetPath(this); SetAttributesFile(this); SetInfo(this); sortFlag = MakeSortFlag(this); }
public ShellItem(ShellBrowser browser, ShellItem parentItem, IntPtr pidl) { this.Browser = browser; this.ParentItem = parentItem; PIDLRel = new PIDL(pidl, false); SetText(this); SetPath(this); SetAttributesFile(this); SetInfo(this); SortFlag = MakeSortFlag(this); }
public ShellBrowserUpdater(ShellBrowser br) { this.br = br; CreateHandle(new CreateParams()); ShellAPI.SHChangeNotifyEntry entry = new ShellAPI.SHChangeNotifyEntry(); entry.pIdl = br.DesktopItem.PIDLRel.Ptr; entry.Recursively = true; notifyId = ShellAPI.SHChangeNotifyRegister( this.Handle, ShellAPI.SHCNRF.InterruptLevel | ShellAPI.SHCNRF.ShellLevel, ShellAPI.SHCNE.ALLEVENTS | ShellAPI.SHCNE.INTERRUPT, ShellAPI.WM.SH_NOTIFY, 1, new ShellAPI.SHChangeNotifyEntry[] { entry }); }
internal ShellItem(ShellBrowser browser, ShellItem parentItem, IntPtr pidl, IntPtr shellFolderPtr) { this.browser = browser; this.parentItem = parentItem; this.shellFolderPtr = shellFolderPtr; this.shellFolder = (IShellFolder)Marshal.GetTypedObjectForIUnknown(shellFolderPtr, typeof(IShellFolder)); subFiles = new ShellItemCollection(this); subFolders = new ShellItemCollection(this); pidlRel = new PIDL(pidl, false); SetText(this); SetPath(this); SetAttributesFolder(this); SetInfo(this); sortFlag = MakeSortFlag(this); }
/// <summary> /// Initialises the base ShellItems, including the Desktop and all it's children and the children of My Computer. /// These items are also added to the TreeView and the navigation bar. /// </summary> private void InitBaseItems() { if (ShellBrowser == null) ShellBrowser = new ShellBrowser(); desktopNode = new TreeNode( ShellBrowser.DesktopItem.Text, ShellBrowser.DesktopItem.ImageIndex, ShellBrowser.DesktopItem.SelectedImageIndex); desktopNode.Tag = ShellBrowser.DesktopItem; desktopNode.Name = desktopNode.Text; folderView.Nodes.Add(desktopNode); navAddressBox.Items.Clear(); navAddressBox.Items.Add(new BrowserComboItem(ShellBrowser.DesktopItem, 0)); navAddressBox.CurrentItem = (BrowserComboItem)navAddressBox.Items[0]; selectedNode = desktopNode; selectedItem = ShellBrowser.DesktopItem; ShellBrowser.DesktopItem.Expand(false, true, IntPtr.Zero); foreach (ShellItem desktopChild in ShellBrowser.DesktopItem.SubFolders) { TreeNode desktopChildNode = new TreeNode( desktopChild.Text, desktopChild.ImageIndex, desktopChild.SelectedImageIndex); desktopChildNode.Tag = desktopChild; desktopChildNode.Name = desktopChildNode.Text; navAddressBox.Items.Add(new BrowserComboItem(desktopChild, 1)); if (desktopChildNode.Text == ShellBrowser.MyComputerName) { myCompNode = desktopChildNode; desktopChild.Expand(false, true, IntPtr.Zero); foreach (ShellItem myCompChild in desktopChild.SubFolders) { TreeNode myCompChildNode = new TreeNode( myCompChild.Text, myCompChild.ImageIndex, myCompChild.SelectedImageIndex); myCompChildNode.Tag = myCompChild; myCompChildNode.Name = myCompChildNode.Text; if (myCompChild.HasSubfolder) myCompChildNode.Nodes.Add(string.Empty); navAddressBox.Items.Add(new BrowserComboItem(myCompChild, 2)); desktopChildNode.Nodes.Add(myCompChildNode); } } else if (desktopChild.HasSubfolder) desktopChildNode.Nodes.Add(string.Empty); desktopNode.Nodes.Add(desktopChildNode); } }
/// <summary> /// Initialises the base ShellItems, including the Desktop and all it's children and the children of My Computer. /// These items are also added to the TreeView and the navigation bar. /// </summary> public void InitBaseItems() { if(ShellBrowser == null) ShellBrowser = new ShellBrowser(); desktopNode = new TreeNode( ShellBrowser.DesktopItem.Text, ShellBrowser.DesktopItem.ImageIndex, ShellBrowser.DesktopItem.SelectedImageIndex); desktopNode.Tag = ShellBrowser.DesktopItem; desktopNode.Name = desktopNode.Text; folderView.Nodes.Add(desktopNode); selectedNode = desktopNode; selectedItem = ShellBrowser.DesktopItem; ShellBrowser.DesktopItem.Expand(false, true, IntPtr.Zero); foreach(ShellItem desktopChild in ShellBrowser.DesktopItem.SubFolders) { TreeNode desktopChildNode = new TreeNode( desktopChild.Text, desktopChild.ImageIndex, desktopChild.SelectedImageIndex); desktopChildNode.Tag = desktopChild; desktopChildNode.Name = desktopChildNode.Text; if(desktopChildNode.Text == ShellBrowser.MyComputerName) { myCompNode = desktopChildNode; desktopChild.Expand(true, true, IntPtr.Zero); foreach(ShellItem myCompChild in desktopChild.SubFolders) { TreeNode myCompChildNode = new TreeNode( myCompChild.Text, myCompChild.ImageIndex, myCompChild.SelectedImageIndex); myCompChildNode.Tag = myCompChild; myCompChildNode.Name = myCompChildNode.Text; if(myCompChild.Expand(true, true, IntPtr.Zero)) { myCompChildNode.Nodes.Add(string.Empty); } desktopChildNode.Nodes.Add(myCompChildNode); } } else if(desktopChild.HasSubfolder) { desktopChildNode.Nodes.Add(string.Empty); } desktopChild.Expand(true, true, IntPtr.Zero); if(desktopChildNode.Nodes.Count == 0) { if(desktopChild.SubFiles.Count > 0) { desktopChildNode.Nodes.Add(string.Empty); } } desktopNode.Nodes.Add(desktopChildNode); } }