遍历进程与模块

遍历进程

通过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就可以完成遍历了。代码和遍历进程的代码基本相同

猜你喜欢

转载自blog.csdn.net/qq_41490873/article/details/86762198