用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

抽取exe和dll程序图标

2016-08-14 作者: 小章举报

[c#]代码库

[System.Runtime.InteropServices.DllImport("shell32.dll")]
    private static extern int ExtractIconEx(string lpszFile, int niconIndex, IntPtr []phiconLarge,IntPtr []phiconSmall, int nIcons);
 
     private IntPtr[] largeIcons, smallIcons ;  //存放大/小图标的指针数组
 
     private string appPath = @"D:\Program Files\Tencent\QQ\Bin\QQ.exe";
 
    //第一步:获取程序中的图标数
     
    int IconCount = ExtractIconEx(appPath, -1, null,null, 0);
   
   //第二步:创建存放大/小图标的空间
 
    largeIcons = new IntPtr[IconCount];
    
    smallIcons = new IntPtr[IconCount];
 
   //第三步:抽取所有的大小图标保存到largeIcons和smallIcons中
     
    ExtractIconEx(appPath, 0, largeIcons,smallIcons, IconCount);
    
   //第四步:显示抽取的图标(推荐使用imageList和listview搭配显示)
 
    for (int i = 0; i < IconCount; i++)
    {
          this.imageList1.Images.Add(Icon.FromHandle(largeIcons[i])); //图标添加进imageList中
 
          ListViewItem lvi = new ListViewItem();
 
          lvi.ImageIndex = i;  //listview子项图标索引项
 
          this.listview1.Items.Add(lvi);
    }
 
    //第五步:保存图标
      
     for (int i = 0; i < this.listview1.Items.Count; i++)
     {
          System.IO.FileStream fs = new System.IO.FileStream(Application.StartupPath +"\\newIcon.png", System.IO.FileMode.Create);
 
          this.imageList1.Images[this.listview1.Items[i].ImageIndex].Save(fs, System.Drawing.Imaging.ImageFormat.Png);
 
          fs.Close();
     }

[源代码打包下载]




网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...