gpt4 book ai didi

delphi - 如何将资源文件附加到现有的可执行文件?

转载 作者:行者123 更新时间:2023-12-03 14:41:04 24 4
gpt4 key购买 nike

我有一个资源文件(.RES),我想将其添加到现有的可执行文件中,而无需重新编译和使用 IDE!这可能吗?

编辑

如何提取资源文件?

最佳答案

如果您的问题是,是否可以将资源添加到现有的 exe 文件中,是的,这是可能的。为此,您必须使用 UpdateResource可以添加、删除或替换可移植可执行 (PE) 文件中的资源的函数。

更新

这里有一个示例代码

{$APPTYPE CONSOLE}

uses
Classes,
Windows,
SysUtils;

procedure UpdateExeResource(Const Source,Dest:string);
var
Stream : TFileStream;
hDestRes : THANDLE;
lpData : Pointer;
cbData : DWORD;
begin
Stream := TFileStream.Create(Source,fmOpenRead or fmShareDenyNone);
try
Stream.Seek(0, soFromBeginning);
cbData:=Stream.Size;
if cbData>0 then
begin
GetMem(lpData,cbData);
try
Stream.Read(lpData^, cbData);
hDestRes:= BeginUpdateResource(PChar(Dest), False);
if hDestRes <> 0 then
if UpdateResource(hDestRes, RT_RCDATA,'DATA',0,lpData,cbData) then
begin
if not EndUpdateResource(hDestRes,FALSE) then RaiseLastOSError
end
else
RaiseLastOSError
else
RaiseLastOSError;
finally
FreeMem(lpData);
end;
end;
finally
Stream.Free;
end;
end;

begin
try
UpdateExeResource('C:\Users\Dexter\Documents\RAD Studio\Projects\Debug\Win32\Data.txt','C:\Users\Dexter\Documents\RAD Studio\Projects\Debug\Win32\project86.exe');
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

关于delphi - 如何将资源文件附加到现有的可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6054300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com