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 极速字符串替换函数字符串转16进制

Delphi 从 .lnk 文件获取真正路径的程序

Delphi中怎么取出字符串中单个char

Delphi中多线程分析详解

delphDelphi chromium embedded 清除指定链接浏览器缓存、cookies

Delphi中用拼音首字符序列来实现检索功能

Delphi2010:把stringgrid数据保存到excel

Delphi 给gmail发送邮件

Delphi 利用createservice写与桌面交互的win32服务

Delphi 执行控制台(console)程序获取返回结果

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



打赏

取消

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

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

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

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

评论

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