【转】 一个从EXE、DLL文件中提取、存取图标完整程序
来源:互联网 发布:汪苏泷 知乎 编辑:程序博客网 时间:2024/05/30 13:41
下面的代码示范了一个完整的提取图标、存储图标的程序:
unit UFormIconGrabber;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ShellAPI, ExtDlgs;
type
TForm1 = class(TForm)
Image1: TImage;
btNextIcon: TButton;
Label1: TLabel;
EditFileName: TEdit;
btBowserFile: TButton;
OpenDialog1: TOpenDialog;
btSaveIco: TButton;
SavePictureDialog1: TSavePictureDialog;
btPrevirousIcon: TButton;
procedure btNextIconClick(Sender: TObject);
procedure btBowserFileClick(Sender: TObject);
procedure btSaveIcoClick(Sender: TObject);
procedure btPrevirousIconClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Procedure MoveIconIndex(Const OperateString:String);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.MoveIconIndex(Const OperateString:String);
const
I : Integer = 0;
FileName : String = '';
var
Count : Integer;
begin
if( FileName <> EditFileName.Text ) then
begin
FileName := EditFileName.Text;
I := 0;
end
else
if OperateString='MoveNextIcon' then
Inc(I)
else
begin
if I>0 then
dec(I);
end;
//得到总的图标数目
Count := ExtractIcon( Application.Handle, PChar(FileName),$FFFFFFFF);
if( I < Count ) then
Image1.Picture.Icon.Handle :=
ExtractIcon( Application.Handle, PChar(FileName), I ) // I为图标的索引
else
ShowMessage('此文件没有更多的图标资源!' );
end;
procedure TForm1.btNextIconClick(Sender: TObject);
begin
MoveIconIndex('MoveNextIcon');
end;
procedure TForm1.btBowserFileClick(Sender: TObject);
begin
try
OpenDialog1.Title:='选择EXE文件或DLL文件:';
OpenDialog1.Filter:='提取文件(*.EXE;*.DLL;*.ICO)|*.DLL;*.EXE;*.ICO|All files (*.*)|*.*';
OpenDialog1.FilterIndex:=1;
if OpenDialog1.Execute then
EditFileName.Text :=OpenDialog1.FileName;
MoveIconIndex('MoveNextIcon');
except
exit;
end;
end;
procedure TForm1.btSaveIcoClick(Sender: TObject);
begin
SavePictureDialog1.DefaultExt := GraphicExtension(TIcon);
SavePictureDialog1.Filter := GraphicFilter(TIcon);
if SavePictureDialog1.Execute then
image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;
procedure TForm1.btPrevirousIconClick(Sender: TObject);
begin
MoveIconIndex('MovePrevIcon');
end;
end.
OK!,这样我们使用TImage.Picture.SaveToFile方法就可以很容易地将图标保存到单独的文件中,然后再利用Image Editor作适量的修改即可!
TrackFrom: http://blog.csdn.net/cooldesigner/archive/2002/01/14/14991.aspx
- 【转】 一个从EXE、DLL文件中提取、存取图标完整程序
- 一个从EXE、DLL文件中提取、存取图标完整程序
- 一个从EXE、DLL文件中提取、存取图标完整程序
- 一个从EXE、DLL文件中提取、存取图标完整程序
- delphi中从DLL,EXE,ICL中提取图标
- Qt之提取exe/dll/icon文件图标
- Qt之提取exe/dll/icon文件图标
- 【xtku】高手支招:教你如何能从DLL文件中提取图标
- VC从EXE中提取资源文件
- 提取exe文件的图标
- 获取程序(EXE文件,dll文件)的主图标
- 保存 EXE、DLL文件图标
- 2011-10-18 17:25 Qt 提取文件(exe, dll等)中的图标icon
- Qt提取EXE文件的大图标
- 从EXE文件中提取音乐、图片等资源
- 从文件中随机提取一个字符串
- EXE文件图标替换完整代码
- 从程序中生成Exe文件
- 在MFC环境下使用ITK/VTK
- IC封装大全
- 思考+行为
- 关于java向下转型
- asp.net2.0学习历程 菜鸟到中级程序员的飞跃
- 【转】 一个从EXE、DLL文件中提取、存取图标完整程序
- 不要被被扼杀在摇篮中的IT------自己的未来,自己去创造
- 一个关于SQL的笔试题目及解答
- P6Spy结合SQL Profiler配置
- 十年学会编程
- 世界上有一种人
- 线段树
- 图形图像处理-之-任意角度的高质量的快速的图像旋转 下篇 补充话题
- 求次小生成树!