2011-01-24 4 views
0

J'essaie de mettre à jour un bitmap à l'intérieur d'un exe. J'ai ouvert hacker ressources et vu que le nom de la ressource 6801 donc je suis venu avec ce codeUpdateResource échoue ... ce que je fais mal?

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; 

L'appel à UpdateResource échoue. Où ai-je tort?

+0

Quel est le code d'erreur? –

+0

La requête n'est pas supportée – opc0de

+0

Vous avez vraiment besoin de vérifier si le code fonctionne avec une ressource ordinaire dans un exécutable ordinaire, et mentionnez-le dans la question. Si ce n'est pas le cas, concentrez-vous là-dessus. Si c'est le cas, le problème est lié au piratage de l'Explorateur que vous essayez. –

Répondre

2

Je ne sais pas pourquoi vous dites que l'appel à UpdateResource échoue. Le seul résultat que vous vérifiez est celui de BeginUpdateResource, qui semble échouer avec le code d'erreur 50, Error_Not_Supported.

Basé sur le numéro de ressource et le nom de variable qui contient le fichier que vous souhaitez mettre à jour, je pense que vous essayez de modifier le bitmap "Start orb" de Windows Explorer. La documentation API vous indique que vous devez pouvoir accéder en écriture au fichier que vous souhaitez mettre à jour, et en particulier que le fichier que vous souhaitez mettre à jour ne peut pas actuellement exécuter. Assurez-vous de fermer l'Explorateur avant de tenter de le modifier.

+0

j'ai exploré l'explorateur. avez-vous exécuté le code? l'appel à updateresource échoue! Je lance mon code en olly donc je n'ai pas besoin de vérifier evrey api kill explorer puis exécutez le code et vous verrez que updateresource échoue avec: La requête n'est pas supportée ... – opc0de