Wie bekomme ich eine Liste mit allen Threads, die von meiner Anwendung erstellt wurden?

7

Ich möchte eine Liste mit allen Threads (außer dem Hauptthread) aus meiner Anwendung erhalten, um einige Aktionen mit ihnen durchzuführen. (setze Priorität, kill, pause etc.) Wie geht das?

    
John Thomas 13.01.2010, 09:36
quelle

5 Antworten

4

Sie können meine Klasse TProcessInfo verwenden:

%Vor%     
vcldeveloper 13.01.2010, 13:43
quelle
12

Eine weitere Option ist die CreateToolhelp32Snapshot , Thread32First und Thread32Next Funktionen.

Siehe dieses sehr einfache Beispiel (Getestet in Delphi 7 und Windows 7).

%Vor%     
RRUZ 13.01.2010 15:34
quelle
3

Sie können sich auch Ссылка

    
K.Sandell 13.01.2010 09:48
quelle
1

Sie können auf diese Informationen mit WMI zugreifen.
Der WIN32_Process kann Ihnen alle Informationen über den Prozess geben, der auf Machine ausgeführt wird. Für jeden Prozess können Sie ThreadsCount, Handle, ... geben.

Eine andere Klasse, WIN32_Thread, kann Ihnen detaillierte Informationen über alle Threads geben, die auf Machine ausgeführt werden. Diese Klasse hat eine Eigenschaft namens ProcessId für die Suche nach bestimmten Threads für einen Prozess (Klasse WIN32_Process).

Um es zu testen, können Sie dies im CommandLine-Fenster ausführen:

%Vor%

Ähnliches können Sie mit WIN32_Thread mit dem Handle des Prozesses machen.

Entschuldige mich für mein schlechtes Englisch.

Grüße.

    
quelle
0

Wenn sie Ihre Threads sind, würde ich einen globalen Thread-Manager erstellen, mit dem sie sich bei der Erstellung registrieren. Dann können Sie Threads ordnungsgemäß mit dem Thread-Manager überwachen, pausieren und herunterfahren.

    
Darian Miller 15.03.2010 14:07
quelle