提取资源文件
我已使用 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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
LoadLibraryEx
传递LOAD_LIBRARY_AS_IMAGE_
加载模块,然后使用RESOURCE
TResourceStream.SaveToFile
保存资源。我当然假设您不想从正在运行的可执行文件中提取资源。如果是这种情况,您可以直接转到
TResourceStream.SaveToFile
。Use
LoadLibraryEx
passingLOAD_LIBRARY_AS_IMAGE_
to load the module and thenRESOURCE
TResourceStream.SaveToFile
to save the resource.I am of course assuming that you don't want to extract the resource from the running executable. If that were the case you could go straight to
TResourceStream.SaveToFile
.您可以使用多种工具:
XN 资源浏览器
资源黑客
rel="nofollow noreferrer">使用 DelphiDabbler< 从代码中 /a>.
或使用
TResourceStream
类。这个问题解释了如何使用它: 如何在运行时将资源提取到文件中?there are several tools you can use:
XN Resource Explorer
Resource Hacker
Resource-Grabber
from code by using DelphiDabbler.
or by using
TResourceStream
class. this question explain you how to use it: How can I extract a resource into a file at runtime?