public CGFolder( CGPidl pidl ) { Open(pidl); }
public void Close() { // Should we cleanup the identifier? if (m_pidl != null) m_pidl.Dispose(); m_pidl = null; // Should we cleanup the folder? if (m_folder != null) Marshal.ReleaseComObject(m_folder); m_folder = null; }
public void Open( CGPidl pidl ) { // Clone the identifier. m_pidl = (CGPidl)pidl.Clone(); // Create the folder reference. InitializeFolder(); }
public void Open( string fullPath ) { // Create the identifier. m_pidl = new CGPidl(fullPath); // Create the folder reference. InitializeFolder(); }
public void Open( Environment.SpecialFolder specialFolder ) { // Free any open resources. Close(); // Create the identifier. m_pidl = new CGPidl(specialFolder); // Create the folder reference. InitializeFolder(); }
public System.Collections.ArrayList GetChildren( bool showHiddenObjects, bool showNonFolders, bool sortResults ) { ArrayList children = new ArrayList(); NativeMethods.IEnumIDList enumList = null; try { // Sanity check the folder before attempting to use it. if (m_pidl == null || !m_pidl.IsFolder || m_folder == null) return children; // Get the enumerator for the object. int hr = m_folder.EnumObjects( IntPtr.Zero, NativeMethods.SHCONTF.SHCONTF_FOLDERS | (showNonFolders ? NativeMethods.SHCONTF.SHCONTF_NONFOLDERS : 0) | (showHiddenObjects ? NativeMethods.SHCONTF.SHCONTF_INCLUDEHIDDEN : 0), out enumList ); // Did we fail? if (hr != 0) Marshal.ThrowExceptionForHR(hr); IntPtr pidl = IntPtr.Zero; int fetched = 0; // Loop and walk through the child objects. while (enumList.Next(1, ref pidl, out fetched) == 0 && fetched == 1) { // Create a new identifier for the object. CGPidl child = new CGPidl( m_pidl.Pidl, pidl ); // Add the object to the array. children.Add(child); } // End while there are more child objects. // Should we sort the results? if (sortResults) children.Sort(); } // End try finally { // Should we cleanup the enumerator reference? if (enumList != null) Marshal.ReleaseComObject(enumList); enumList = null; } // End finally // Return the list of children. return children; }
public object Clone() { // Clone the object. CGPidl pidl = new CGPidl(); pidl.m_pidl = NativeMethods.ILClone(m_pidl); pidl.m_displayName = m_displayName; pidl.m_typeName = m_typeName; pidl.m_attributes = m_attributes; pidl.m_physicalPath = m_physicalPath; // Return the clone. return pidl; }