//提取exe或dll文件32*32图标。命令行参数为文件路径和名称,图标生成到C:\。
program Project2;{$APPTYPE CONSOLE}uses
Windows,SysUtils,Graphics,ShellApi;var
ico:TIcon; //默认图标是32*32
n,i:Integer;
inf,f:String;
consoleHandle:THandle;begin
if ParamCount<1 then
begin
WriteLn('The file''s path and name is required!');
Exit;
end;
for i:=1 to ParamCount do
if i<>ParamCount then
f:=f+ParamStr(i)+' '
else
f:=f+ParamStr(i);
if not FileExists(f) then
begin
WriteLn('File doesn''t exist!');
Exit;
end;
//统计图标个数:
consoleHandle:=GetStdHandle(STD_OUTPUT_HANDLE);
n:=ExtractIcon(consoleHandle,PChar(f),UInt(-1));
if n=0 then
begin
WriteLn('Find no icons!');
Exit;
end;
inf:='Extract successfully:';
try
ico:=TIcon.Create;
for i:=0 to n-1 do
begin
//获得图标句柄:
ico.Handle:=ExtractIcon(consoleHandle,PChar(f),i);
ico.SaveToFile('c:\'+inttostr(i+1)+'.ico');
ico.ReleaseHandle;
inf:=inf+#13+#10+'c:\'+InttoStr(i+1)+'.ico';
end;
finally
ico.Free;
end;
WriteLn(inf);end.生成的exe100多KB。我知道可以用ASPack等软件来压缩。但我想通过修改源代码来减小体积。
是不是存在这样的方法来减小体积:
去除uses单元的内容并且自己声明用到的函数。如果是,具体怎样修改?到底修改后的源代码应该是怎样的呢?
解决方案 »
- 不安装word客户端,怎么在delphi中显示word文档内容?
- 新手请教,如何让一个Editbox只能输入数字?
- 商场POS机系统的打印出来的那些小票,那么小,怎么做的?用什么纸张?什么打印机?什么报表设计?
- 虚心求教!!!关于菜单关联控制的问题!!!
- 怎样把程序缩成托盘图标
- 上网记录让在注册表的哪个主键下面?参与就有分
- 请问谁有语音查询方面的资料或例子?谢谢
- 快崩溃了,关于SQL语句的问题!没什么分了!!!一定要帮帮我呀
- 请教,如何防止一个应用程序的多个实例运行?
- 版主,本站40%的注册会员根本就不懂PASICAL和Delphi,在这里乱发言,希望给予控制。
- winexec 问题
- vb的Me.hwnd
这两个单元.
这两个单元?
怎么做到阿?直接删除了SysUtils,Graphics很显然不行。
从上面的Uses单元中把用到的部分摘出来,复制这个pas文件中,然后Del 所有的引用单元,如果提示缺少XXXX,还得再找。