Herhangi bir prosesin (işlem) bünyesinde bulunan thread (kanal) sayısını almak için aşağıdaki alt programı kullanabilirsiniz. GetCurrentProcessId çalışmakta olan programın prosess kimlik numarasını getirir. TlHelp32 ünitesini dahil etmeyi unutmayın.

implementation
uses TlHelp32;

function ThreadCount(iProcessID: DWord): integer;
var
  SnapHandle: THandle;
  ProcEntry: TProcessEntry32;
begin
  Result := 0;
  SnapHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if SnapHandle = 0 then Exit;
  FillChar(ProcEntry, SizeOf(TProcessEntry32), 0);
  ProcEntry.dwSize := SizeOf(TProcessEntry32);
  if Process32First(SnapHandle, ProcEntry) then
  begin
    if ProcEntry.th32ProcessID = iProcessID then
    begin
      Result := ProcEntry.cntThreads;
      Exit;
    end;
    while Process32Next(SnapHandle, ProcEntry) = true do
    begin
      if ProcEntry.th32ProcessID = iProcessID then
      begin
        Result := ProcEntry.cntThreads;
        Break;
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := inttostr( ThreadCount( GetCurrentProcessId ));
end;

CEVAP VER

This site uses Akismet to reduce spam. Learn how your comment data is processed.