我正在尝试更新exe内的位图。我打开资源黑客,发现资源名称是6801所以我想出了这个代码
ResUpdate:=BeginUpdateResource(Pchar(szExplorer),false);
ShowMessage(SysErrorMessage(GetLastError));
if ResUpdate<>0 then
begin
FS:=TFileStream.Create(szBitmap,fmOpenRead or fmShareDenyWrite);
SetLength(thebmp,FS.Size);
dwSize:=FS.Size;
FS.ReadBuffer(thebmp[0],FS.Size);
FS.Free;
UpdateResource(ResUpdate,RT_BITMAP,MAKEINTRESOURCE(6801),LANG_SYSTEM_DEFAULT,@thebmp[0],dwSize);
EndUpdateResource(ResUpdate,false);
end;
对UpdateResource的调用失败。我哪里错了?
答案 0 :(得分:2)
我不知道为什么你说对UpdateResource
的调用失败了。您检查的唯一结果是BeginUpdateResource
的结果,显然失败了,错误代码为50,Error_Not_Supported
。
根据资源编号和包含您要更新的文件的变量名称,我认为您正在尝试修改Windows资源管理器的“Start orb”位图。 API文档告诉您,您需要能够获得要更新的文件的写入权限,特别是您要更新的文件目前无法正常运行。在尝试修改之前,请确保关闭资源管理器。