Ich verwende folgende Routine, um die anzahl der Threads eines Processes zu ermitteln.
Delphi-Quellcode:
function TProcess.SetCountThreads: DWORD;
var
hProcess : THandle;
ModuleList : array[0..1024] of DWORD;
cbNeeded : DWORD;
foo: DWORD;
bar: WideString;
i: Integer;
begin
cbNeeded := 0;
hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, FProcID);
if hProcess <> 0 then
begin
if EnumProcessModules(hProcess, @ModuleList, SizeOf(ModuleList), cbNeeded) then
begin
foo := SizeOf(DWORD);
Result := cbNeeded div foo;
end
else
begin
Result := 0;
end;
CloseHandle(hProcess);
end
else
begin
Result := 0;
end;
end;
Leider kommen da unsinnige Werte bei raus. Die Demo-Anwendung hat nur einen Thread, es werden aber 14 angezeigt. Wo liegt da mein Fehler?