提取应用程序中的图标资源
经常看见一些软件有着美丽,光艳夺目,非常个性化的图标,曾几何时也想拥有,可苦于缺少一点点艺术细胞,只好打起妙手空空的念头。经过一天的捉摸,也找到一些门道,效果还佳,再用delphi自带的Image Editor加以修改,彻底私有化,为我所用。洒家用此法做了一些漂亮的图标,令老友羡慕不已。好了,好东西当然不敢独享,且容我为各位慢慢道来:
首先用API函数LoadLibrary(lpLibFileName: PChar): HMODULE; stdcall; 把指定的程序模块映射到调用程序的地址空间去。该函数返回模块的句柄,假定为hExe;
然后用EnumResourceNames(hExe,RT_ICON,@EnumResName,myflag)找到图标的资源名,其中参数EnumResName是回调函数,图标的name值将由回调函数的一个变参得到。
然后再向回调函数体内加入代码提取图标就可以了。EnumResourceNames函数将会一直查找每一个图标直到查找失败或EnumResName返回false值为止。这样我们就能提取程序所包含的每一个图标,榨尽最后一滴油,够狠吧!
详细代码如下:
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Menus, ImgList;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;