如题,我有一个编译好的DLL文件,里面有用到的图片资源,现在想替换其中一副图片..请问有什么办法吗?

解决方案 »

  1.   

    可以找找看有没有这种工具。
    如果自己写程序,用BeginUpdateResource、UpdateResource、EndUpdateResource等函数。
      

  2.   

    介绍两个软件给你。一款国产资源编辑工具,使用内存载入资源分析,所以被分析的程序并未被独占,在分析期间仍可使用。
    http://www.pediy.com/tools/Resource/ResScope/ResScope1.94.rar它能百分之百的分析被压缩的资源,对于被压缩的软件, freeRes 还能为它重新建立起一份可编辑的资源,
    使到其他资源编辑工具(ResScope,eXeScope 等等)能够正常的处理该软件。
    http://www.pediy.com/tools/Resource/freeRes/freeRes0.94.zip
      

  3.   

    exescopehttp://down1.tech.sina.com.cn/download/downContent/2004-03-16/6509.shtml
      

  4.   

    Updating   Resources  
      The   following   example   copies   a   dialog   box   resource   from   one   executable   file,   Hand.exe,   to   another,   Foot.exe,   by   following   these   steps:    
       
      Use   the   LoadLibrary   function   to   load   the   executable   file   Hand.exe.    
      Use   the   FindResource   and   LoadResource   functions   to   locate   and   load   the   dialog   box   resource.    
      Use   the   LockResource   function   to   retrieve   a   pointer   to   the   dialog   box   resource   data.    
      Use   the   BeginUpdateResource   function   to   open   an   update   handle   to   Foot.exe.    
      Use   the   UpdateResource   function   to   copy   the   dialog   box   resource   from   Hand.exe   to   Foot.exe.    
      Use   the   EndUpdateResource   function   to   complete   the   update.    
      The   following   code   implements   these   steps.    
       
      HRSRC   hResLoad;           //   handle   to   loaded   resource    
      HANDLE   hExe;                 //   handle   to   existing   .EXE   file    
      HRSRC   hRes;                   //   handle/ptr.   to   res.   info.   in   hExe    
      HANDLE   hUpdateRes;     //   update   resource   handle    
      char   *lpResLock;         //   pointer   to   resource   data    
      BOOL   result;    
      //   Load   the   .EXE   file   that   contains   the   dialog   box   you   want   to   copy.    
      hExe   =   LoadLibrary("hand.exe");    
      if   (hExe   ==   NULL)    
      {    
              ErrorHandler("Could   not   load   exe.");    
      }    
         
      //   Locate   the   dialog   box   resource   in   the   .EXE   file.    
      hRes   =   FindResource(hExe,   "AboutBox",   RT_DIALOG);    
      if   (hRes   ==   NULL)    
      {    
              ErrorHandler("Could   not   locate   dialog   box.");    
      }    
         
      //   Load   the   dialog   box   into   global   memory.    
      hResLoad   =   LoadResource(hExe,   hRes);    
      if   (hResLoad   ==   NULL)    
      {    
              ErrorHandler("Could   not   load   dialog   box.");    
      }    
         
      //   Lock   the   dialog   box   into   global   memory.    
      lpResLock   =   LockResource(hResLoad);    
      if   (lpResLock   ==   NULL)    
      {    
              ErrorHandler("Could   not   lock   dialog   box.");    
      }    
         
      //   Open   the   file   to   which   you   want   to   add   the   dialog   box   resource.    
      hUpdateRes   =   BeginUpdateResource("foot.exe",   FALSE);    
      if   (hUpdateRes   ==   NULL)    
      {    
              ErrorHandler("Could   not   open   file   for   writing.");    
      }    
         
      //   Add   the   dialog   box   resource   to   the   update   list.    
      result   =   UpdateResource(hUpdateRes,               //   update   resource   handle    
                RT_DIALOG,                                       //   change   dialog   box   resource    
                "AboutBox",                                     //   dialog   box   name    
                MAKELANGID(LANG_NEUTRAL,   SUBLANG_NEUTRAL),     //   neutral   language  
                lpResLock,                                       //   ptr   to   resource   info    
                SizeofResource(hExe,   hRes));   //   size   of   resource   info.    
      if   (result   ==   FALSE)    
      {    
              ErrorHandler("Could   not   add   resource.");    
      }    
         
      //   Write   changes   to   FOOT.EXE   and   then   close   it.    
      if   (!EndUpdateResource(hUpdateRes,   FALSE))    
      {    
              ErrorHandler("Could   not   write   changes   to   file.");    
      }    
         
      //   Clean   up.    
      if   (!FreeLibrary(hExe))    
      {    
              ErrorHandler("Could   not   free   executable.");    
      }