function GetModuleHandle2(ProcessID:Dword;sDllName: string): Dword; var th32handle: THandle; me32:TModuleEntry32; finded : Boolean; begin finded := False; th32handle:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcessID); if th32handle = INVALID_HANDLE_VALUE then Exit; me32.dwSize := sizeof(TModuleEntry32); if Module32First( th32handle,me32 ) then repeat if AnsiStricomp(PChar(ExtractFilename(me32.szExePath )), PChar(ExtractFilename(sDllName))) = 0 then begin Result := me32.hModule ; break; end; until not Module32Next(th32handle,me32); end;
http://www.dependencywalker.com/
function GetModuleHandle2(ProcessID:Dword;sDllName: string): Dword;
var
th32handle: THandle;
me32:TModuleEntry32;
finded : Boolean;
begin
finded := False;
th32handle:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcessID);
if th32handle = INVALID_HANDLE_VALUE then Exit;
me32.dwSize := sizeof(TModuleEntry32);
if Module32First( th32handle,me32 ) then
repeat
if AnsiStricomp(PChar(ExtractFilename(me32.szExePath )), PChar(ExtractFilename(sDllName))) = 0 then
begin
Result := me32.hModule ;
break;
end;
until not Module32Next(th32handle,me32);
end;