Delphi自定义释放资源过程

本文介绍了一个从DLL文件中提取资源的实用示例。通过使用Windows API函数,如FindResource、LoadResource等,该示例展示了如何定位指定类型的资源,并将其写入新的DLL文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

program Project2;

uses
  Windows;

{$R mydll.RES}

function ExtractRes(ResType, ResName, OutName: string): Boolean;
var
  HResInfo: THandle;
  HGlobal: THandle;
  HFile: THandle;
  Ptr: Pointer;
  Size, N: Integer;
begin
  HFile:= INVALID_HANDLE_VALUE;
  repeat
  Result:= False;
  HResInfo:= FindResource(HInstance, PChar(ResName), PChar(ResType));
  if HResInfo = 0 then Break;
  HGlobal:= LoadResource(HInstance, HResInfo);
  if HGlobal = 0 then Break;
  Ptr:= LockResource(HGlobal);
  Size:= SizeOfResource(HInstance, HResInfo);
  if Ptr = nil then Break;
  HFile:= CreateFile(PChar(OutName), GENERIC_READ or GENERIC_WRITE, 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
  if HFile = INVALID_HANDLE_VALUE then Break;
  if WriteFile(HFile, Ptr^, Size, LongWord(N), nil) then Result:= True;
until True;
  if HFile <> INVALID_HANDLE_VALUE then CloseHandle(HFile);
end;

begin
  ExtractRes('dll', 'mydll','C:/123.dll' );   //资源类型 资源名 输出文件名
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值