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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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; |