Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
        }