程序运行后释放出被编译到EXE文件中的DLL文件(100分)

  • 主题发起人 qiuxueting
  • 开始时间
Q

qiuxueting

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:程序编译时将一个要随程序携带的DLL文件编译进去,运行这个程序后,
这个DLL文件则被释放到一个指定的位置。
要具体的代码实例,因为我对资源文件的使用较陌生,关键是如何释放出来。
 
用Stream读取,用FileStream写出来就可以了。。[:)]
其实就算Stream流的操作。。
 
你去看看文件捆绑之类的例子就明白了!在论坛搜索一下,有答案!
 
例子:
建立一个包含NotePad.exe和Arj.exe的资源文件Resjunk.rc
NOTEPAD EXEFILE C:/WINDOWS/NOTEPAD.EXE
ARJ EXEFILE C:/UTILS/ARJ.EXE
编译它
在DOS的提示符下打 BRCC Resjunk.rc 硬盘哗啦啦转一会儿后,就编译完了
在源程序中加入下面这一句段
{$R RESJUNK.RES}

procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ExtractRes('EXEFILE','NOTEPAD','MM.EXE');
end;

例2
建立一个包含midas.dll的资源文件m.rc
"MIDAS DLLFILE C:/WINDOWS/SYSTEM/MIDAS.DLL"编译它
在DOS的提示符下打 BRCC32 m.rc 硬盘哗啦啦转一会儿后,就编译完了
生成"m.res"文件.
在源程序中加入下面这一句段
{$R m.RES} 编译系统即可
下面是从EXE中出来的代码。
procedure ExtractRes(ResType, ResName, ResNewName : String);
var Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ExtractRes('DLLFILE','MIDAS','MM.DLL');
end;
 
接受答案了.
 
顶部