public static List <ExtractedIcon> ExtractIconsFromDll(string uri) { var list = new List <ExtractedIcon>(); var source = uri.ToLowerInvariant().Replace(@"%systemroot%\system32\", "").Replace(".dll", ""); var errors = 0; for (var i = 0; i < 100; i++) { try { var icon = new ExtractedIcon(); icon.Index = i; icon.Source = source; icon.Icon16 = IconExtractor.ExtractIcon(uri, i, false); icon.Icon32 = IconExtractor.ExtractIcon(uri, i, true); if (icon.IsValid) { list.Add(icon); } } catch { if (errors++ >= 3) { i = Int32.MaxValue; } } } return(list); }
private void UtiliTreeForm_Load(object sender, EventArgs e) { // init previews icon16.Width = 16; icon16.Height = 16; icon32.Width = 32; icon32.Height = 32; icon64.Width = 64; icon64.Height = 64; icon64.SizeMode = PictureBoxSizeMode.StretchImage; icon128.Width = 128; icon128.Height = 128; icon128.SizeMode = PictureBoxSizeMode.StretchImage; // start default render treeFolders.BeginUpdate(); listIcons.BeginUpdate(); var root = new TreeNode(); root.Name = "ICONS"; root.Text = "ICONS"; root.ImageKey = "ICONS"; root.Expand(); treeFolders.Nodes.Add(root); var dlls = new string[] { @"%SystemRoot%\system32\shell32.dll", @"%SystemRoot%\system32\imageres.dll", @"%SystemRoot%\system32\DDORes.dll", @"%SystemRoot%\system32\setupapi.dll", @"%SystemRoot%\system32\networkexplorer.dll", @"%SystemRoot%\system32\wmploc.dll", @"%SystemRoot%\system32\ieframe.dll", //@"%SystemRoot%\system32\gameux.dll", }; foreach (var uri in dlls) { var icons = IconExtractor.ExtractIconsFromDll(uri); var source = icons.First().Source; var group = new ListViewGroup(source); listIcons.Groups.Add(group); root.Nodes.Add(source, source); foreach (var icon in icons) { var key = icon.Key; imageList16.Images.Add(key, icon.Icon16); imageList32.Images.Add(key, icon.Icon32); var iconItem = new ListViewItem(); iconItem.Group = group; iconItem.Name = key; iconItem.Text = key; iconItem.ImageKey = key; listIcons.Items.Add(iconItem); } } treeFolders.EndUpdate(); listIcons.EndUpdate(); UpdateToolbarCommands(); txtPath.KeyPress += TxtPath_KeyPress; treeFolders.AfterSelect += TreeFolders_AfterSelect; listIcons.CheckBoxes = true; listIcons.View = View.LargeIcon; listIcons.ShowGroups = false; listIcons.ItemChecked += ListIcons_ItemChecked; listIcons.SelectedIndexChanged += ListIcons_SelectedIndexChanged; listSelected.DoubleClick += ListSelected_DoubleClick; }