用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程。在很多情况下需要对系统的进程进行操作,方法有很多种但最常用的是CreateToolhelp32Snapshot/Process32First/Process32Next 一系列API 实现结束进程使用TerminateProcess 下面的函数可以使现对进程的枚举: int ProcessList() { PROCESSENTRY32 pe32; pe32.dwSize=sizeof(pe32); int count=0; HANDLE hProcessSnap=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcessSnap==INVALID_HANDLE_VALUE) { printf("CreateToolhelp32Snapshot调用失败!"); return -1; } BOOL bMore=::Process32First(hProcessSnap,&pe32); printf("%20s/t%10s/n","进程名","PID"); printf("====================================/n"); while(bMore) { count++; printf("%20s/t%10d/n",pe32.szExeFile,pe32.th32ProcessID); bMore=::Process32Next(hProcessSnap,&pe32); } ::CloseHandle(hProcessSnap); printf("====================================/n"); printf("/n当前系统进程数为:%d/n",count); return 0; } 结束进程可以使用下面的函数:(使现其中dwid为想要结束的进程ID可通过列进程的函数得到) int TerminateProcessFromId(DWORD dwId) { BOOL bRet=FALSE; HANDLE hProcess=::OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwId); if(hProcess!=NULL) { bRet=::TerminateProcess(hProcess,0); } ::CloseHandle(hProcess); if(bRet) printf("%d 进程结束成功....../n/n/n/n",dwId); else printf("%d 进程结束失败....../n/n/n/n",dwId); return 0; }
API枚举系统进程
最新推荐文章于 2020-04-03 00:32:31 发布