将多个图标文件编译到C#程序中

一个exe或者dll文件可以包含多个图标资源,比如windows系统的user32.dll,win7下的C:\Windows\System32\imageres.dll文件,这些图标资源可以被应用于快捷方式和默认图标等,也可以作为一个打包的资源文件,这样你的程序就不用包含一大堆.ico文件了。

在开始怎么创建之前,我们首先看看怎么查看exe或者dll里面的图标资源;

  • 如果你没有任何工具,可以随便打开一个快捷方式,选择“更改图标”,再选择“浏览”找到你要查看的资源文件,比如TTPlayer.exe,然后你就可以看到这个exe包含的可识别的图标了;

  • 使用Resource Hacker 工具。这个工具是一个windows资源文件查看与修改的工具,打开它,把你的文件拖进去,在“图标组”节点中就可以看到所有的图标:

创建DLL资源文件

OK,那怎么用Visual Studio创建资源文件呢?我曾经试过在C#项目的 Resource.resx中添加多个图标,但是编译之后用上面两种方法均无法查看到,后来只能转用C++项目来解决这个问题。

  1. 打开VS,新建一个C++项目,“应用程序类型”选择 “DLL”;
  2. 可以在“解决方案资源管理器”中看到一个“资源文件”目录,这个就是我们要添加图标文件的位置。将你的图标文件添加进来,注意最后编译出来的资源文件中,图标的顺序不是按照添加顺序排序的,而是按照这里显示的文件名排序,所以,你可以看到我添加了前缀“001”来达到排序目的;
  3. 添加完之后,编译整个解决方案;
  4. 打开解决方案myResource.sln文件所在目录下的Debug目录,里面的myResource.dll既是我们要的资源文件;
  5. 打开项目文件myResource.vcproj文件所在目录下的Debug目录,里面有一个myResource.res,大小比上面的dll文件略小,这是一个“Win32资源文件”,里面也包含了图标文件,有什么用呢?继续往下看。

将多个图标文件编译到C#程序中

终于到主题了,我们最终的目的是要把资源都编译到exe文件中。有了上一步,就容易了

    1. 打开你的项目,选择项目的“属性”页;
    2. 找到“应用程序”,在“资源”组中,选中“资源文件”,点击旁边的浏览按钮找到上面我们编译出来的myResource.res文件(这是显示的是绝对路径,推荐改为相对路径),保存,编译项目;
    3. 这个时候,查看你生成的exe文件,是不是有多个图标?并且第一个图标作为了exe的默认图标。
posted @ 2013-05-09 14:57  季风哥  阅读(1812)  评论(1编辑  收藏  举报