delphi 动态添加资源文件


本文整理自网络,侵删。

 

添加资源,就算里面没有该ID所代表的资源也没问题。
function UpdateRes(AUpdate: Cardinal; AResID: Integer; ARes: string): Boolean;
var
  fs: TFileStream;
  pBuffer: PByte;
begin
  fs := TFileStream.Create(ARes, fmOpenRead);
  try
    fs.Position := 0;
    GetMem(pBuffer, fs.Size);
    try
      fs.Read(pBuffer^, fs.Size);
      Result := UpdateResource(AUpdate, MAKEINTRESOURCE(RT_RCDATA),
        MAKEINTRESOURCE(AResID), MAKELANGID(LANG_NEUTRAL, LANG_NEUTRAL),
        pBuffer, fs.Size);
    finally
      FreeMem(pBuffer, fs.Size);
    end;
  finally
    FreeAndNil(fs);
  end;
end;
bRet := False;
hUpdate := BeginUpdateResource(PChar(edt3.Text), False);
if hUpdate <> 0 then  
try
  bRet := UpdateRes(hUpdate, 100, edt1.Text);
finally
  EndUpdateResource(hUpdate, False);
end;
读取资源。

procedure ExtractResAndRun(AName: string; AResID: Integer);

var

  Res: HRSRC;

  iRes: Integer;

  hResData: HGLOBAL;

  pBuffer: PByte;

  ms: TMemoryStream;

begin

  Res := FindResource(HInstance, MAKEINTRESOURCE(AResID), RT_RCDATA);

  if Res <> 0 then

  try

    iRes := SizeofResource(HInstance, Res);

    if iRes = 0 then  Exit;

    hResData := LoadResource(HInstance, Res);

    if hResData = 0 then Exit;

    pBuffer := LockResource(hResData);

    if pBuffer <> nil then

    try

      ms := TMemoryStream.Create;

      try

        ms.SetSize(iRes);

        ms.Write(pBuffer^, iRes);

        ms.SaveToFile(AName);

        if FileExists(AName) then

          ShellExecute(0, ‘open’, PChar(AName), nil, nil, SW_SHOWNORMAL);

      finally

        FreeAndNil(ms);

      end;

    finally

      UnlockResource(hResData);

    end;

  finally

    FreeResource(Res);

  end;

end;

 

来源 http://www.hicpp.com/code/338.html

相关阅读 >>

Delphi tsearchrec

Delphi 实现文件实施监控

Delphi windowsapi: muldiv

Delphi ini文件操作 tinifile、tmeminifile

Delphi获取flash文件的影片时长,原始尺寸,帧数等信息

Delphi分离汉字和英文字母

Delphi edit 让密码变成点

Delphi ddk与wdk

Delphi 如何判断一个exe文件是否运行

Delphi 中字符串比较函数对比

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...