用delphi写程序读其他程序调用的DLL文件中内存地址的方案

2025-02-24 22:10:14
推荐回答(1个)
回答1:

Windown Api:

LoadLibrary
载入指定的动态链接库,并将它映射到当前进程使用的地址空间。一旦载入,即可访问库内保存的资源,成功则返回库模块的句柄,零表示失败

FreeLibrary
释放指定的动态链接库

用 LoadLibrary 载入 abc.dll

var
 RasLib : THandle;
 Str:array[0..255] of Char;
begin
 RasLib := LoadLibrary (PChar(AppPath+'abc.dll')) ;
  try
    if RasLib <> 0 then begin
       //资源类型为 Bitmap,资源 ID 为 1
       Bitmap1.Handle:=LoadBitmap(RasLib, MakeIntResource(1));
       
       //资源类型为 icon,资源名称 为 MainIcon
       icon1.Handle := LoadIcon(RasLib,  'MainIcon');
       
       //资源类型为 String,资源 ID 为 3
       if LoadString(RasLib, 3, @Str, sizeof(Str)) <> 0 then
          Label1.Caption := StrPas(Str);

       //载入任意类型资源
       with TResourceStream.Create(RasLib, 资源名称, 资源类型) do begin
       try
        SaveToFile('d:\.....');
         ....
        SaveToStream(Stream);
       finally
         Free;
       end;
    end;
  finally
   FreeLibrary(RasLib);
  end;