2010-09-28 11 views

Antwort

5

können Sie die CreateToolhelp32Snapshot Funktion mit dem TH32CS_SNAPTHREAD Flag verwenden

diesen Code zu sehen.

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; 

Und auf diese Weise nennen, die GetCurrentProcessId Funktion weicht mit Ruft die PID (Prozess-ID) der Anwendung.

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

Danke für die Antwort. – lmengyew

1

Siehe den Beispielcode here, dass die Fäden eines Prozesses auflistet.

0

Mit WMI können Sie die Prozessliste runninig in System und alle Informationen über den Prozess erhalten. Sie müssen die Klasse Win32_process verwenden.
Diese Klasse umfasst das Verfahren Thread:
······································· · 0 ··················
ThreadCount
Anzahl der aktiven Threads in einem Prozeß. Ein Befehl ist die Grundeinheit der Ausführung in einem Prozessor und ein Thread ist das Objekt, das einen Befehl ausführt. Jeder laufende Prozess hat mindestens einen Thread. ················································· ··········

Here (auf meiner Web) können Sie Ressourcen zu diesem Thema finden.

(1) VProcess; Anwendung thah Verwendung GLibWMI Library alle laufenden Prozesse und Informationen über diese abrufen. ThreadCount ist in diesen Informationen enthalten. Das Projekt ist kostenlos und die Quelle ist enthalten (Sie können es sehen und bewerten).

alt text

(2) Sie können GLibWMI herunterladen und die Komponente TProcessInfo sehen, die Ihnen alle Informationen des Verfahrens (es auf VProcess verwendet wird). Diese Bibliothek ist kostenlos und der Quellcode ist verfügbar. Sie können es sehen und den Code auswerten. Sehen Sie sich die Demos an, die diese Komponente testen.

Ich hoffe, dass dies für Sie nützlich ist.

Grüße.

Verwandte Themen