每个进程启动后,除了1个主线程,还会有多个子线程。
以下代码在win7,win10下可以工作。
#include <TlHelp32.h>
int getThreadCount()
{
int num=0;
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32;// = {0};
memset(&pe32,0,sizeof(PROCESSENTRY32));
//获得句柄
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap != INVALID_HANDLE_VALUE)
{
int processid = GetCurrentProcessId();
pe32.dwSize = sizeof(PROCESSENTRY32);
//列举所有进程名称
if (Process32First(hProcessSnap, &pe32))
{
do{
if (pe32.th32ProcessID == processid)
{
CloseHandle(hProcessSnap);
num= pe32.cntThreads;
break;
}
}while (Process32Next(hProcessSnap, &pe32));//直到列举完毕
}else{
}
CloseHandle (hProcessSnap);
}
return num;
}