如何当前进程中的线程数目,及其线程ID

CodeNazior 2008-12-26 09:50:36
//windows xp sp3

我没有找到相应api.
谢谢大家
...全文
74 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
silverice 2008-12-26
  • 打赏
  • 举报
回复
怎么可能没有相应API呢!
如果程序是你写的,获取线程ID
DWORD GetThreadId(
HANDLE Thread
);

如果你想写一个类似WINDOWS任务管理器的东西,你可以使用ToolHelp(也是系统API,不是软件)。在《windows核心编程》里有介绍,功能很强大。除了获取线程ID等之外,还可以获取进程加载的模块等等信息
coverallwangp 2008-12-26
  • 打赏
  • 举报
回复

#include <windows.h>
#include <stdio.h>
#include <TLHELP32.H>

void pslist(void)
{
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 pe32= {0};
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if (hProcessSnap == (HANDLE)-1)
{
printf("\nCreateToolhelp32Snapshot() failed:%d",GetLastError());
return ;
}

pe32.dwSize = sizeof(PROCESSENTRY32);
printf("\nProcessName     Num of threads     ProcessID");
int nProcessCount = 0;
if (Process32First(hProcessSnap, &pe32))
{
char a[5];
do
{
nProcessCount++;
itoa(pe32.th32ProcessID,a,10);
printf("\n%-20s%-20d%d",pe32.szExeFile,pe32.cntThreads,pe32.th32ProcessID);
}
while (Process32Next(hProcessSnap, &pe32));
}
else
{
printf("\nProcess32Firstt() failed:%d",GetLastError());
}

printf("\nThe Num of Process is %d",nProcessCount);
CloseHandle (hProcessSnap);
return;
}

int main()
{
pslist();
return 0;
}

上面的程序是列出系统的进程,进程的线程数目,进程的Id

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧