2011-01-24 3 views
0

exe ​​안에 비트 맵을 업데이트하려고합니다. 나는 리소스 해커를 열고 자원 이름은 6801 그래서 난이 코드 UpdateResource에 대한 호출이 실패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; 

해낸 것을 보았다. 내가 어디가 잘못 됐니?

+0

오류 코드는 무엇입니까? –

+0

요청이 지원되지 않습니다. – opc0de

+0

코드가 일반 실행 파일 내의 일반 리소스와 함께 작동하는지 여부를 확인하고 질문에 언급해야합니다. 그렇지 않으면 초점을 맞 춥니 다. 문제가 있으면 익스플로러 해킹 시도와 관련이 있습니다. –

답변

2

UpdateResource에 대한 호출이 실패한 이유를 알 수 없습니다. 확인하려는 유일한 결과는 BeginUpdateResource이며 오류 코드 50, Error_Not_Supported이 발생하지 않는 것입니다.

업데이트 할 파일을 보유하고있는 리소스 번호와 변수 이름을 바탕으로 Windows 탐색기의 "시작 구"비트 맵을 수정하려고합니다. API 문서는 업데이트하려는 파일에 대한 쓰기 권한을 얻을 수 있어야 함을 알려줍니다. 특히 업데이트 할 파일 은 현재을 실행할 수 없습니다. 탐색기를 종료하기 전에 탐색기를 종료해야합니다.

+0

나는 탐험가를 불러 들였다. 코드를 실행 했나요? updateresource에 대한 호출이 실패합니다! 나는 내 코드를 olly로 실행하므로 evrey api check explorer를 죽이고 코드를 실행할 필요가 없으며 updateresource가 실패한 것을 볼 수있다 : 요청이 지원되지 않는다 ... – opc0de

관련 문제