2010-09-28 16 views

Odpowiedz

5

można użyć funkcji CreateToolhelp32Snapshot z flagą TH32CS_SNAPTHREAD

zobaczyć ten kod.

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; 

i połączenia w ten sposób, korzystając z funkcji Wich GetCurrentProcessId Pobiera PID (identyfikator procesu) aplikacji.

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

Dzięki za odpowiedź. – lmengyew

1

Zobacz przykładowy kod here, który wylicza wątki procesu.

0

Za pomocą usługi WMI można uzyskać listę procesów uruchomionych w systemie i wszystkie informacje o procesie. Musisz użyć klasy Win32_process.
Klasa ta obejmuje THREADCOUNT metoda:
······································· ··················
ThreadCount
Liczba aktywnych wątków w procesie. Instrukcja jest podstawową jednostką wykonawczą w procesorze, a wątek jest obiektem, który wykonuje instrukcję. Każdy uruchomiony proces ma co najmniej jeden wątek. ····································································································· ·········

Here (w mojej sieci) można znaleźć zasoby na ten temat.

(1) VProcess; Aplikacja ta używa GLibWMI Library do pobierania wszystkich uruchomionych procesów i informacji na ten temat. ThreadCount jest zawarty w tej informacji. Projekt jest darmowy i zawiera źródło (możesz je zobaczyć i ocenić).

alt text

(2) Można pobrać GLibWMI i zobaczyć element TProcessInfo że daje wszystkie informacje o procesie (nie jest to wykorzystywane na VProcess). Ta biblioteka jest bezpłatna, a kod źródłowy jest dostępny. Możesz go zobaczyć i ocenić kod. Zobacz dema, które testują ten komponent.

Mam nadzieję, że jest to dla Ciebie przydatne.

Pozdrawiam.

Powiązane problemy