作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是delphi 2010,有没有办法通过delphi函数或windows api了解项目的运行线程数?
最佳答案
您可以使用CreateToolhelp32Snapshot
带有 TH32CS_SNAPTHREAD
标志的函数
请参阅此代码。
uses
PsAPI,
TlHelp32,
Windows,
SysUtils;
function GetTThreadsCount(PID:Cardinal): Integer;
var
SnapProcHandle: THandle;
NextProc : Boolean;
TThreadEntry : TThreadEntry32;
Proceed : Boolean;
begin
Result:=0;
SnapProcHandle := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); //Takes a snapshot of the all threads
Proceed := (SnapProcHandle <> INVALID_HANDLE_VALUE);
if Proceed then
try
TThreadEntry.dwSize := SizeOf(TThreadEntry);
NextProc := Thread32First(SnapProcHandle, TThreadEntry);//get the first Thread
while NextProc do
begin
if TThreadEntry.th32OwnerProcessID = PID then //Check the owner Pid against the PID requested
Inc(Result);
NextProc := Thread32Next(SnapProcHandle, TThreadEntry);//get the Next Thread
end;
finally
CloseHandle(SnapProcHandle);//Close the Handle
end;
end;
并以这种方式调用,使用 GetCurrentProcessId
函数 检索应用程序的 PID(进程标识符)。
Var
Num :integer;
begin
Num:=GetTThreadsCount(GetCurrentProcessId);
end;
关于multithreading - 正在运行的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3809708/
我是一名优秀的程序员,十分优秀!