UpdateResource не удается ... что я делаю не так? - PullRequest
0 голосов
/ 25 января 2011

Я пытаюсь обновить растровое изображение внутри 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 Ответ

2 голосов
/ 25 января 2011

Я не знаю, почему вы говорите, что UpdateResource не удается. Единственный результат, который вы проверяете, это результат BeginUpdateResource, который, по-видимому, завершается ошибкой с кодом ошибки 50, Error_Not_Supported.

Исходя из номера ресурса и имени переменной, содержащей файл, который вы хотите обновить, я думаю, вы пытаетесь изменить растровое изображение "Start orb" в проводнике Windows. Документация по API говорит о том, что вам необходимо иметь доступ на запись к файлу, который вы хотите обновить, и, в частности, что файл, который вы хотите обновить , в настоящее время не может работать . Убедитесь, что вы выключили Проводник, прежде чем пытаться его изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...