Exemplo n.º 1
0
        private static IEnumerable <string> GetFolders(Shell.IShellItem shellItem)
        {
            var id           = new Guid(Shell.ShellGuids.IShellItemArray);
            var shellLibrary = (Shell.IShellLibrary) new Shell.ShellLibrary();
            var shellItems   = default(Shell.IShellItemArray);

            try
            {
                shellLibrary.LoadLibraryFromItem(shellItem, Shell.AccessModes.Read);
                try
                {
                    var result = shellLibrary.GetFolders(Shell.LibraryFolderFilter.AllItems, ref id, out shellItems);
                    if (result == Shell.HResult.S_OK)
                    {
                        foreach (var folder in GetFolders(shellItems))
                        {
                            yield return(folder);
                        }
                    }
                }
                finally
                {
                    Marshal.ReleaseComObject(shellItems);
                }
            }
            finally
            {
                Marshal.ReleaseComObject(shellLibrary);
            }
        }
Exemplo n.º 2
0
        private static string GetDisplayName(Shell.IShellItem shellItem, Shell.SIGDN sigdn)
        {
            var pointer = shellItem.GetDisplayName(sigdn);
            var result  = Marshal.PtrToStringUni(pointer);

            Marshal.FreeCoTaskMem(pointer);
            return(result);
        }
 void IInitializeWithItem.Initialize(Shell.IShellItem shellItem, Shell.AccessModes accessMode)
 {
     _shellObject = ShellObjectFactory.Create(shellItem);
 }