得到某一程序中某一DLL的基址

var
ok: Bool;
ProcessStruct: TProcessEntry32;
ModuleStruct: TModuleEntry32;
hProcessSnap,hModuleSnap:Cardinal;
Begin
hProcessSnap:= CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0);
ProcessStruct.dwSize := Sizeof(ProcessStruct);
ok := Process32First(hProcessSnap, ProcessStruct);
while ok do
begin
if (StrComp(StrLower(ProcessStruct.szExeFile),'xxxxxx.exe')=0) then
begin
ProcessID:= ProcessStruct.th32ProcessID;
hModuleSnap:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcessID);
if (hModuleSnap<>INVALID_HANDLE_VALUE) then
begin
ModuleStruct.dwSize:=sizeof(ModuleStruct);
if Module32First(hModuleSnap,ModuleStruct) then
begin
repeat
if(StrComp(StrLower(ModuleStruct.szModule),'xxxxxx.dll')=0) then
begin
addr:=Integer(ModuleStruct.modBaseAddr);
break;
end;
until (not Module32Next(hModuleSnap,ModuleStruct))
end;
end;
break;
end;
ok := Process32Next(hProcessSnap, ProcessStruct);
end;
CloseHandle(hProcessSnap);
CloseHandle(hModuleSnap);