zyjsuper 发表于 2022-9-30 16:46

求助提取exe文件图标问题

话不多说,上代码,使用这个代码提取到图标文件格式仍然是png,哪里出问题了,万能的坛友么,赐教下吧。 private void button1_Click(object sender, EventArgs e)
      {

            try
            {
                // Image img = System.Drawing.Icon.ExtractAssociatedIcon(textBox1.Text).ToBitmap();
                string filePath = textBox1.Text;
                var filename = System.IO.Path.GetFileName(textBox1.Text);
                string savePath = Environment.GetEnvironmentVariable("USERPROFILE") + "\\Desktop\\AppIcos\\";
                if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);
                // img.Save(savePath + filename +".ico");
                var iconTotalCount = PrivateExtractIcons(filePath, 0, 0, 0, null, null, 0, 0);

                //用于接收获取到的图标指针
                IntPtr[] hIcons = new IntPtr;
                //对应的图标id
                int[] ids = new int;
                //成功获取到的图标个数
                var successCount = PrivateExtractIcons(filePath, 0, 256, 256, hIcons, ids, iconTotalCount, 0);
                //遍历并保存图标
                for (var i = 0; i < successCount; i++)
                {
                  //指针为空,跳过
                  if (hIcons == IntPtr.Zero) continue;
                  using (var ico = Icon.FromHandle(hIcons))
                  {
                        using (var myIcon = ico.ToBitmap())
                        {
                            myIcon.Save(savePath + ids.ToString("000") + ".ico", ImageFormat.Icon);
                        }
                  }
                  //内存回收
                  DestroyIcon(hIcons);
                }
                MessageBox.Show("图标已经提取到桌面的AppIcos文件中。");
            }
            catch(Exception ex) {
                MessageBox.Show(ex.ToString());
            }

愤怒的小西瓜 发表于 2022-9-30 18:25

直接用Quick Any2Ico一键搞定还写啥代码呀{:1_926:}

canghaisui 发表于 2022-9-30 21:02

愤怒的小西瓜 发表于 2022-9-30 18:25
直接用Quick Any2Ico一键搞定还写啥代码呀

谢谢分享,求链接
页: [1]
查看完整版本: 求助提取exe文件图标问题