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?
Eine weitere Option ist die CreateToolhelp32Snapshot , Thread32First und Thread32Next Funktionen.
Siehe dieses sehr einfache Beispiel (Getestet in Delphi 7 und Windows 7).
%Vor% 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.
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.
Tags und Links multithreading windows delphi process