UpdateResource失败了......我做错了什么?

时间:2011-01-24 23:48:33

标签: delphi resources

我正在尝试更新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的调用失败。我哪里错了?

1 个答案:

答案 0 :(得分:2)

我不知道为什么你说对UpdateResource的调用失败了。您检查的唯一结果是BeginUpdateResource的结果,显然失败了,错误代码为50,Error_Not_Supported

根据资源编号和包含您要更新的文件的变量名称,我认为您正在尝试修改Windows资源管理器的“Start orb”位图。 API文档告诉您,您需要能够获得要更新的文件的写入权限,特别是您要更新的文件目前无法正常运行。在尝试修改之前,请确保关闭资源管理器。