请问怎样获得当前进程的线程数目? rt, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 下面枚举所有进程的所有线程,不知为何不成功(枚举模块却都可以),本来想开个帖子问的,问题和你差不多,讨论一下好了,代码如下:#include <stdio.h>#include <wchar.h>#include <windows.h>#include <tlhelp32.h> DWORD PrintAllThreadOfProcess(){DWORD pid=0;HANDLE hProcessSnap = NULL;// 取得整个进程链hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);// 进程信息结构体PROCESSENTRY32 pe;pe.dwSize = sizeof(PROCESSENTRY32);Process32First(hProcessSnap,&pe);do{ // getchar(); printf("***********************************\n"); printf("线程ID:%ld,马甲现身:%s\n",pe.th32ProcessID,pe.szExeFile); HANDLE hThreadSnap =NULL; // 线程信息结构体,如果想取得模块信息,则结构体为MODULE, // 下面的函数相应改为,Module32First等等 THREADENTRY32 me32 = {0}; me32.dwSize = sizeof(THREADENTRY32); // 取得线程模块快照 hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID); // //////////////////////////////////////////////////////////////////////// // if (Module32First(hThreadSnap, &me32)) if (Thread32First(hThreadSnap, &me32)) { do { printf("我是它的线程,id是:%d\n",me32.th32ThreadID); // 说明:线程是没有马甲的 } while ( Thread32Next(hThreadSnap, &me32)); } else { printf("没有线程链\n"); } // 关掉线程快照 CloseHandle (hThreadSnap); // ////////////////////////////////////////////////////////////////////////}while(Process32Next(hProcessSnap,&pe));// 关掉进程快照CloseHandle (hProcessSnap);return pid;}int main(int argc, char* argv[]){PrintAllThreadOfProcess();return 0;} 编译错误! 关于报表打印的问题 报错:重复定义。为什么? WIN32里面有没有类似TRACE的语句? vc 调试时死机问题, 急等!!!!!!!!!!!!! "Unreconized database format :...db.mdb"是什么错误呀?VC DAO ACCESS,为什么一运行就出这个错误呀? 请教关于COM聚合的问题 学习SDK编程什么书比较好?? 怎么对付非法操作???? 关于截获IO口数据,请高手指点! (100分)怎么实现ACTIVEx实现对网叶内容的更新? (当ACTIVE 收到服务器的消息时,要显示到页面上), 关于批量数据的显示问题
#include <wchar.h>
#include <windows.h>
#include <tlhelp32.h> DWORD PrintAllThreadOfProcess()
{
DWORD pid=0;
HANDLE hProcessSnap = NULL;
// 取得整个进程链
hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL);
// 进程信息结构体
PROCESSENTRY32 pe;
pe.dwSize = sizeof(PROCESSENTRY32);
Process32First(hProcessSnap,&pe);
do
{
// getchar();
printf("***********************************\n");
printf("线程ID:%ld,马甲现身:%s\n",pe.th32ProcessID,pe.szExeFile);
HANDLE hThreadSnap =NULL;
// 线程信息结构体,如果想取得模块信息,则结构体为MODULE,
// 下面的函数相应改为,Module32First等等
THREADENTRY32 me32 = {0};
me32.dwSize = sizeof(THREADENTRY32);
// 取得线程模块快照
hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pe.th32ProcessID);
// ////////////////////////////////////////////////////////////////////////
// if (Module32First(hThreadSnap, &me32))
if (Thread32First(hThreadSnap, &me32))
{
do
{
printf("我是它的线程,id是:%d\n",me32.th32ThreadID);
// 说明:线程是没有马甲的
}
while ( Thread32Next(hThreadSnap, &me32)); }
else
{
printf("没有线程链\n");
}
// 关掉线程快照
CloseHandle (hThreadSnap);
// ////////////////////////////////////////////////////////////////////////
}
while(Process32Next(hProcessSnap,&pe));
// 关掉进程快照
CloseHandle (hProcessSnap);
return pid;
}
int main(int argc, char* argv[])
{
PrintAllThreadOfProcess();
return 0;
}