如何使DELPHI编译出来的EXE文件最小

来源:互联网 发布:java反编译工具jd gui 编辑:程序博客网 时间:2024/04/29 15:47

发信人: Stony (My Digital Stony·喜欢上海的理由), 信区: Borland
标  题: 如何使DELPHI编译出来的EXE文件最小[zz]
发信站: 饮水思源 (2004年08月11日11:49:38 星期三), 站内信件

如何使DELPHI编译出来的EXE文件最小
作者:  出处:  更新时间: 2004年08月04日 
1、尽量用API函数来写程序。一个完全用API写的窗口编译后只有8KB。具体可以购买一本《Windows程序设计》来看看,¥160。我也有CHM格式的,但足足有4M多,所以无法提供,见谅!
例子下载:一个包含一个按钮、一个EDIT的窗口程序。
2、尽量把某些函数和过程直接用到程序中,而不是在Uses中引用某个单元。现在的面向对象语言编译器都有个缺点,就是即使你只用到某个单元的一个函数或者一个结构,编译器也会把这个单元整个打包编译。
3、调试完毕后把调试信息编译选项去掉再编译一次。这样做也可以减少一定的大小。
4、一些小程序可以采用控制台程序的方法编写。
注意事项:
1、程序的扩展名不是PAS,而是DPR
2、要加入一句{$APPTYPE console} //设置程序为非图形界面
3、可以调用API函数。
如我以前写的一个破解星号密码的程序,如果用图形界面来写,放一个TIME控件也是可以的。但大小差很多。
//***********************************************************8
//password_dos.dpr,陈经韬作品
//http://lovejingtao.126.com
//lovejingtao@21cn.com
//***********************************************************8

program password_dos;
{$apptype console} //设置程序为非图形界面

uses
windows,
messages;

const s:boolean=true;//置循环标志

var

pass_edit_hwnd:hwnd;//密码窗口句柄
p:tpoint; //鼠标指针

begin

writeln;
writeln('**************************************************************************');
writeln;
writeln;
writeln('     星号*密码破解器'                                             );
writeln('     使用方法:将鼠标移动到密码框,密码就会自动现形!'               );
writeln('     按 Ctrl+C 退出程序。 '                                       );
writeln('                                ///|/// '                         );
writeln('                               // - - // '                        );
writeln('                                ( @ @ ) '                         );
writeln('      +----------------------oOOo-(_)-oOOo---------------------+ ');
writeln('      |                                                        | ');
writeln('      | 若在使用过程中发现任何问题或有新的想法请及时与我联系:  | ');
writeln('      | 主页:http://lovejingtao.126.com                       | ');
writeln('      | E-MAIL: lovejingtao@21cn.com                           | ');
writeln('      |                                                        | ');
writeln('      |                               Oooo 陈经韬 2000.07      | ');
writeln('      +---------------------- oooO---(   )---------------------+ ');
writeln('                              (   )   ) / '                       );
writeln('                               / (   (_/ '                        );
writeln('                                /_) '                             );
writeln;
writeln('**************************************************************************');
writeln;
while s<>false do begin
getcursorpos(p); //查鼠标坐标
pass_edit_hwnd:= WindowFromPoint(p); //返回句柄
SendMessage(pass_edit_hwnd,EM_SETPASSWORDCHAR,0,0);//发送消息
SendMessage(pass_edit_hwnd,WM_PAINT,0,0); //
SendMessage(pass_edit_hwnd,WM_KILLFOCUS,0,0); // 刷新窗口
SendMessage(pass_edit_hwnd,WM_SETFOCUS,0,0); //
sleep(1000); //延时1000毫秒
end;
end.
5、用其它的控件来设计程序。
例子XForm下载:一组不使用 VCL 专门建立精简 .EXE 的类库,使用 XForm 替换 TForm, XControl 替换 TControl 可以大幅缩小 .EXE 文件的大小
6、用ASPACK等压缩软件来压一下。这个方法应该很多人知道了。UPX也不错,但我觉得ASPACK好一点,因为ASPACK压缩后的程序还有自我保护功能,当别人修改或者病毒感染了你的EXE文件后,运行时会报错并且无法继续运行。虽然UPX可以压得更小,但UPX本身的代码是公布了的,所以别
人很容易破解你的程序。
 
 
 

--
※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 202.120.43.16]

原创粉丝点击