遍历进程
通过CreateToolHelp32Snapshot函数可以给系统里面的所有进程,模块创建一个快照。然后通过Process32First 和Process32Next就可以遍历快照中的进程
CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) //第一个参数传入TH32CS_SNAPPROCESS这个值,第二个参数为0就可以给系统中的所有进程创建一个快照
void EnumProcess()
{
HANDLE hSnapShot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//获得所有进程的快照
if (hSnapShot==INVALID_HANDLE_VALUE)
{
MessageBox(0,TEXT("进程快照获取失败"),TEXT("错误"),MB_OK | MB_ICONEXCLAMATION);
return;
}
PROCESSENTRY32 ProcessEntry={sizeof(PROCESSENTRY32)};//结构体里面有进程的PID 进程名等信息 这个结构体的大小一定要赋值 不然会出错
//获取快照里的第一个进程的信息
Process32First(hSnapShot,&ProcessEntry);
while(Process32Next(hSnapShot,&ProcessEntry))
{
//do 自己的代码 可以在控制台显示 也可以在界面程序显示
}
CloseHandle(hSnapShot);
}
遍历某一进程的模块
CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,ProcessEntry.th32ProcessID)//第一个参数指定为模块TH32CS_SNAPMODULE,第二个参数指定为某一进程的PID ,这样指定进程的模块快照就创建好了
调用API Module32First 和Module32Next就可以完成遍历了。代码和遍历进程的代码基本相同