delphi - 提取资源文件

标签 delphi resources extract

我已使用 UpdateResource 函数将资源文件附加到现有 exe 文件。

如何提取它?

编辑

这是我将资源文件附加到现有 exe 文件的代码:

Uses Classes, Windows, SysUtils, Dialogs;

Type
  TBuffer = Array[0..0] of Byte;
  PBuffer = ^TBuffer;

Var
  FS             : TFileStream;
  ResourceHandle : THandle;
  DataLength     : DWord;
  Data           : PBuffer;
  Ok             : Boolean;

Begin
   ResourceHandle := BeginUpdateResource(pChar('d:\someexefile.exe'), False);
   IF (ResourceHandle <> 0) Then
   Begin
      FS := TFileStream.Create('d:\somebitmap.bmp', fmOpenRead);
      FS.Seek(0, soFromBeginning);
      DataLength := FS.Size;
      GetMem(Data, DataLength);
      FS.Read(Data^, DataLength);
      FS.Free;

      Ok := True;
      IF (not UpdateResource(ResourceHandle, RT_RCDATA, pChar('MyNewResource'), LANG_SYSTEM_DEFAULT{MakeLangID(LANG_NEUTRAL, SUBLANG_NEUTRAL)}, Data, DataLength)) Then Ok := False;

      IF (not EndUpdateResource(ResourceHandle, False)) Then Ok := False;

      IF (Ok) Then ShowMessage('Update of resources successful!')
         Else ShowMessage('Update of resources failed!');

      FreeMem(Data);
   End;
End. 

最佳答案

使用LoadLibraryEx传递LOAD_LIBRARY_AS_IMAGE_ RESOURCE 加载模块,然后 TResourceStream.SaveToFile 保存资源。

我当然假设您不想从正在运行的可执行文件中提取资源。如果是这种情况,您可以直接转到 TResourceStream.SaveToFile

关于delphi - 提取资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080872/

相关文章:

android - 在钛中,是否可以从 android 模块访问 3rd-party-jar-bundled 资源文件( xml )?

java - 从命令行创建 JAR 文件不起作用

executable - 自解压可执行文件是如何制作的?

json - 如何使用 SuperObject 序列化包含点(例如 IP 地址)的 JSON key ?

delphi - Microsoft.WebView2 和 Edge

java - 为什么 getResource 为 NULL?

hadoop - 如何增加 AM 可以在 Hadoop 中使用的最大 vCores?

delphi - anchor [akLeft、akRight、akBottom] 无法正常工作

delphi - 如何混合 Mp3 文件

MYSQL:将两个字符之间的字符串转换为整数