我将一些字符串资源放在DLL中,从中取出已经没问题了,可是我还需要对字符串的内容进行修改,这可怎么办呢?请高手帮助,谢谢!附:DLL中字符串资源的格式#define IDS_STRING1 1
#define IDS_STRING2 2
#define IDS_STRING3 3
STRINGTABLE 
{
 IDS_STRING1, "abcdefg"
 IDS_STRING2, "ddddd"
 IDS_STRING3, "ggghhhh"
}

解决方案 »

  1.   

    思路:
    1.用二进制流的方式来把DLL读入内存
    2.然后改写对应字符串在内存中对应位置的值.(要清楚字符串在DLL内存
    中的位置或偏移量, 一般都有特定的存放位置)
    3.改写完后, 保存二进制流.
      

  2.   

    只有字符串的东西,你把它保存到INI文件里不就可以了,而且修改也方便,DLL不好修改
      

  3.   

    我将一些字符串资源放在DLL中,从中取出已经没问题了,可是我还需要对字符串的内容进行修改,这可怎么办呢?请高手帮助,谢谢!附:DLL中字符串资源的格式#define IDS_STRING1 1
    #define IDS_STRING2 2
    #define IDS_STRING3 3
    STRINGTABLE 
    {
     IDS_STRING1, "abcdefg"
     IDS_STRING2, "ddddd"
     IDS_STRING3, "ggghhhh"
    }
    同意
      

  4.   

    to cg1120: 我的需求就是这样的,要用INI的确没有这么麻烦,可我现在要解决的是修改DLL的问题,还是在这点上给些建议吧! :)
      

  5.   

    .dll文件可以随便修改来修改去的么.
      

  6.   

    to lw549:EXE文件都可以修改,DLL怎不能改,闲话少说 :)
      

  7.   

    从理论上来说,DLL文件是可以修改的,但修改起来会很麻烦的,不过你可以参考一下这篇文章:把图标存储在SHELL32.DLL    laoli(原作)  
      
    关键字     图标,SHELL32.DLL 
      
    uses 
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,shellapi,Dialogs; type 
      TForm1 = class(TForm) 
        procedure FormCreate(Sender: TObject); 
        procedure FormClose(Sender: TObject; var Action: TCloseAction); 
      private 
        { Private declarations } 
      public 
        { Public declarations } 
      end; var 
      Form1: TForm1; 
      DesktopIcon: TimageList; // 做一个你喜欢的图象列表 
    implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); 
    Var Ico: TIcon; 
        Sfi: Tshfileinfo; 
        I  : Integer; 
    begin //分配一个句柄给图象列表 DesktopIcon:= TImageList.Create(Self); 
    DesktopIcon.Handle := SHGetFileInfo('', 0, sfi, SizeOf(TSHFileInfo), 
         shGFI_SYSICONINDEX or SHGFI_SMALLICON); 
    DesktopIcon.ShareImages := TRUE; 
    For I:=0 to DesktopIcon.count -1 do 
      Begin 
      Ico := Ticon.Create; 
      DesktopIcon.GetIcon(I,Ico); 
      Ico.SaveToFile('c:\icons\'+inttostr(i)+'.ico'); 
      Ico.Free; 
      End; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 
    begin 
    Desktopicon.free; 
    end; end. 
     
      

  8.   

    see windows API Resource functions(such as FindResource,UpdateResource) you can get it from msdn library
      

  9.   

    to cxy_ll:UpdateResource系列函数只能在win2000下才能用呀to ahjoe:能给个例子吗?
      

  10.   

    http://list-archive.xemacs.org/xemacs-patches/200002/msg00058.html看一看这里的文章吧