Ich habe diesen Code, der alle Threads durchläuft. Ich möchte die Threads nur von meinem eigenen Prozess erhalten, ohne alle Threads durchlaufen zu müssen, die auf dem System laufen.Wie können Sie Threads im selben Prozess auflisten?
var
SnapProcHandle: THandle;
NextProc : Boolean;
TThreadEntry : TThreadEntry32;
begin
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
Result := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Result then
try
TThreadEntry.dwSize := SizeOf(TThreadEntry);
NextProc := Thread32First(SnapProcHandle, TThreadEntry);
while NextProc do
begin
if TThreadEntry.th32OwnerProcessID = PID then
begin
Memo1.Lines.Add('Thread ID '+IntToStr(TThreadEntry.th32ThreadID));
Memo1.Lines.Add('base priority '+inttostr(TThreadEntry.tpBasePri));
Memo1.Lines.Add('delta priority '+inttostr(TThreadEntry.tpBasePri));
end;
NextProc := Thread32Next(SnapProcHandle, TThreadEntry);
end;
finally
CloseHandle(SnapProcHandle);
end;
end;
Ihr Englisch ist in Ordnung, aber Ihr Code ist nicht lesbar. Bearbeiten Sie die Frage, lesen Sie die Hilfe zum Bearbeiten eines Formulars den Code. Verbringe etwas Zeit damit. Gib nicht nach 20 Jahren auf wie so viele vor dir. –
Dupes: http://StackOverflow.com/q/2055642/800214 und http://StackOverflow.com/Questions/3809708/Running-Threads-count – whosrdaddy
Es ist auch schwierig, die Frage zu verstehen, und wie der Code sich darauf bezieht . Was erwarten Sie von dem Code? Was tut es. –