Ich delphi 2010 verwenden, ist es trotzdem Fäden des Projekts über delphi Funktion oder Fenster api zählen zu wissen, läuft?laufenden Threads zählen
Antwort
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;
Es ist eine Art Overkill, nur um eine Zählung zu bekommen, aber CreateToolhelp32Snapshot
gefolgt von Thread32First
und Thread32Next
sollte die Aufgabe erledigen.
Siehe den Beispielcode here, dass die Fäden eines Prozesses auflistet.
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).
(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.
- 1. Wie alle laufenden Threads beenden?
- 2. Gtest wie alle laufenden Threads
- 3. Beenden von laufenden Threads auf JFrame close
- 4. Füllen zählen 'Eimer' in CUDA Threads
- 5. Rückgabewerte von zwei lange laufenden Methoden, mit Threads
- 6. Wie alle laufenden Threads außer dem aktuellen Thread zu stoppen?
- 7. Listet alle laufenden/wartenden Threads in ThreadPoolTaskExecutor auf
- 8. Erhalte eine Liste aller laufenden Threads in Java
- 9. Schließen einer ausführbaren Datei durch Schließen eines aktuell laufenden Threads
- 10. Wie finden und stoppen Sie alle aktuell laufenden Threads?
- 11. Zählen der gesamten gleichen laufenden Prozesse in C++
- 12. Semaphor-Implementierung zum Zählen von Nr. der derzeit laufenden Instanzen
- 13. Lange laufende MSMQ-Nachrichtenverarbeitung. Die Begrenzung Worker-Threads zählen
- 14. Sidekiq: Zählen Sie die Anzahl der verfügbaren Threads
- 15. Debugging eines laufenden Python-Prozesses
- 16. Python getting Threads
- 17. Umbenennen von Threads in Java
- 18. Wie kann ich eine Liste aller laufenden Threads anzeigen, die von setTimeout/setInterval ausgeführt werden
- 19. Die beste Lösung für einen Windows-Dienst mit konstant laufenden Threads in C# 4.0
- 20. Delphi: Debuggen kritischer Abschnitt durch Berichtsaufruf von laufenden Threads auf Sperre "Fehler" hängen
- 21. Anzeigen, Pausieren und Löschen von Threads in einer laufenden .Net-Anwendung
- 22. Threads Grenze auf Android?
- 23. Anwendungs-Threads vs. Service-Threads
- 24. ASP.NET MVC und lange laufenden Aktionen
- 25. läuft höchstens n Java-Threads
- 26. Blockieren von Threads
- 27. Behandlung empfangener Nachrichten im laufenden Thread
- 28. Ist System.nanoTime() konsistent über Threads?
- 29. Javascript laufenden Code einmal
- 30. Grundlegendes zur laufenden Objekttabelle
Danke für die Antwort. – lmengyew