看流星社区

 找回密码
 注册账号
查看: 2871|回复: 1

[Delphi] Delphi自定义释放资源过程

[复制链接]

该用户从未签到

发表于 2014-8-7 09:10:13 | 显示全部楼层 |阅读模式
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.

该用户从未签到

发表于 2015-7-18 11:17:33 | 显示全部楼层
c++的释放方式
FindResource
LoadResource
LockResource
if WriteFile(HFile, Ptr^, Size, LongWord(N), nil) then Result:= True;
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-28 19:28

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表