2010-09-28 21 views

Respuesta

5

puede utilizar la función CreateToolhelp32Snapshot con la bandera TH32CS_SNAPTHREAD

ver este código.

uses 
    PsAPI, 
    TlHelp32, 
    Windows, 
    SysUtils; 

    function GetTThreadsCount(PID:Cardinal): Integer; 
    var 
     SnapProcHandle: THandle; 
     NextProc  : Boolean; 
     TThreadEntry : TThreadEntry32; 
     Proceed  : Boolean; 
    begin 
     Result:=0; 
     SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); //Takes a snapshot of the all threads 
     Proceed := (SnapProcHandle <> INVALID_HANDLE_VALUE); 
     if Proceed then 
      try 
      TThreadEntry.dwSize := SizeOf(TThreadEntry); 
      NextProc := Thread32First(SnapProcHandle, TThreadEntry);//get the first Thread 
      while NextProc do 
      begin 
       if TThreadEntry.th32OwnerProcessID = PID then //Check the owner Pid against the PID requested 
       Inc(Result); 
       NextProc := Thread32Next(SnapProcHandle, TThreadEntry);//get the Next Thread 
      end; 
      finally 
      CloseHandle(SnapProcHandle);//Close the Handle 
      end; 
    end; 

Y llama de esta manera, utilizando la función wich GetCurrentProcessId Recupera el PID (identificador de proceso) de su aplicación.

Var 
Num :integer; 
begin 
Num:=GetTThreadsCount(GetCurrentProcessId); 
end; 
+0

Gracias por su respuesta. – lmengyew

1

Consulte el código de ejemplo here que enumera los hilos de un proceso.

0

Usando WMI puede obtener la lista de procesos que se ejecuta en el Sistema y toda la información sobre el proceso. Debe usar la clase Win32_process.
esta clase incluyen el método threadcount:
······································· ····························
ThreadCount
Número de hilos activos en un proceso. Una instrucción es la unidad básica de ejecución en un procesador, y un hilo es el objeto que ejecuta una instrucción. Cada proceso en ejecución tiene al menos un hilo. ····················································································································· ··········

Here (en mi web) puede encontrar recursos sobre este tema.

(1) VProcess; Aplicación que utiliza GLibWMI Library para recuperar todos los procesos en ejecución e información sobre esto. ThreadCount está incluido en esta información. El proyecto es gratuito y la fuente está incluida (se puede ver y evaluar).

alt text

(2) Puede descargar GLibWMI y ver el componente TProcessInfo que le dan toda la información del proceso (se usa en VProcess). Esta biblioteca es gratuita y el código fuente está disponible. Puedes verlo y evaluar el código. Vea las demostraciones que prueban este componente.

espero que esto son ussefull para usted.

Atentamente.

Cuestiones relacionadas