2011-01-24 38 views
0

我想更新exe文件中的位图。我打开资源黑客,看到资源名称是6801,所以我想出了这个代码UpdateResource失败...我做错了什么?

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

什么是错误代码? – 2011-01-24 23:51:22

+0

请求不受支持 – opc0de 2011-01-24 23:53:31

回答

2

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

根据资源编号和变量名称来保存你想要更新的文件,我想你试图修改Windows资源管理器的“Start orb”位图。 API文档告诉您,您需要能够获得您希望更新的文件的写入权限,特别是您想要更新的文件目前不能运行。确保在尝试修改之前关闭资源管理器。