delphi – 如何将资源文件附加到现有的可执行文件?
发布时间:2020-12-15 10:11:39 所属栏目:大数据 来源:网络整理
导读:我有一个资源文件(.RES),我想将其添加到现有的可执行文件中,而无需重新编译和使用IDE!可能吗? 编辑 以及如何提取资源文件? 解决方法 如果您的问题是,如果您可以将资源添加到现有的exe文件,是的,这是可能的.为此,您必须使用 UpdateResource 函数,该函数可
我有一个资源文件(.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',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:UsersDexterDocumentsRAD StudioProjectsDebugWin32Data.txt','C:UsersDexterDocumentsRAD StudioProjectsDebugWin32project86.exe'); except on E: Exception do Writeln(E.ClassName,': ',E.Message); end; end. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |