private static IEnumerable <string> GetFolders(ModernShell.IShellItemArray shellItems) { foreach (var shellItem in GetItems(shellItems)) { yield return(GetDisplayName(shellItem, ModernShell.SIGDN.DESKTOPABSOLUTEPARSING)); Marshal.ReleaseComObject(shellItem); } }
private static IEnumerable <ModernShell.IShellItem> GetItems(ModernShell.IShellItemArray shellItems) { var count = default(uint); shellItems.GetCount(out count); for (var position = default(uint); position < count; position++) { var shellItem = default(ModernShell.IShellItem); shellItems.GetItemAt(position, out shellItem); yield return(shellItem); } }