quarta-feira, 21 de outubro de 2009

Obter número de Threads de um processo

Olá. Graças à generosidade do Luís Gustavo Fabbro, que mantém um blog muito interessante, a Balaio Tecnológico, posto aqui o código necessário para obter a quantidade de thread de um processo, pelo PID dele:

uses TlHelp32;

{*
Levanta a quantidade de Threads de um processo

@param piPID Identificador do processo em questão
}
function TGInfoWinService.GetThreadCount(piPID: Cardinal): Boolean;
var
hSnapShot   : THandle;
rThreadInfo : TThreadEntry32;
bNext       : Boolean;
iThreadCount: Integer;
begin
Result := False;
iThreadCount := 0;
try
try
hSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
if (hSnapShot = THandle(-1)) then
raise EGWinService.Create('Erro ao levantar ThreadCount',39248209);
rThreadInfo.dwSize := SizeOf(rThreadInfo);
bNext := Thread32First(hSnapShot,rThreadInfo);
while (bNext) do
begin
if (rThreadInfo.th32OwnerProcessID = piPID) then
Inc(iThreadCount);
bNext := Thread32Next(hSnapShot,rThreadInfo);
end;
Result := True;
except
on E: Exception do
GerarLogTipoException(56565654,E,'Unt_WinService');
end;
finally
CloseHandle(hSnapShot);
if Result then
Self.FThreadCount := iThreadCount
else
Self.FThreadCount := -1;
end;
end;


Mais informações em:

http://balaiotecnologico.blogspot.com/2009/10/obtendo-informacoes-sobre-as-threads-de.html

Minha lista de blogs