進程(WINAPI),遍歷並查找樹狀的進程信息,實現控制系統進程
阿新 • • 發佈:2017-07-15
ces pop size blog ext 快照 -a 查找 printf
#include <TlHelp32.h> //檢索系統全部進程 void showall() { PROCESSENTRY32 pe32 = {0}; pe32.dwSize = sizeof(pe32); //查找進程 HANDLE hpprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//CreateToolhelp32Snapshot創建快照 BOOL bmore = Process32First(hpprocess,&pe32);//查找 while (bmore) { printf("%-25s %d\n",pe32.szExeFile,pe32.th32ParentProcessID); bmore=Process32Next(hpprocess, &pe32); } } //通過進程名來關閉 void close(char *name) { PROCESSENTRY32 pe32 = { 0 };//進程快照 pe32.dwSize = sizeof(pe32);//設置機構體大小 HANDLE hpprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); BOOL bmore = Process32First(hpprocess, &pe32); while (bmore) { printf("%s %d\n", pe32.szExeFile, pe32.th32ParentProcessID); if (!strcmp("FsCapture.exe", pe32.szExeFile) ) { puts("\n\nfind,存在該進程!"); HANDLE hpro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);//打開進程 TerminateProcess(hpro, 0);//結束線程 註意此處 } bmore = Process32Next(hpprocess, &pe32); } printf("\n不存在此進程!\n"); } //通過進程編號來關閉 void closebyid(unsigned long id) { PROCESSENTRY32 pe32 = { 0 };//進程快照 pe32.dwSize = sizeof(pe32);//設置機構體大小 HANDLE hpprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); BOOL bmore = Process32First(hpprocess, &pe32);//尋找 //找全部的進程 while (bmore) { if (id==pe32.th32ProcessID) { puts("find"); HANDLE hpro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ParentProcessID);//打開進程 TerminateProcess(hpro, 0); } bmore = Process32Next(hpprocess, &pe32); } } void main() { printf("進程名\t\t\t進程編號\n"); showall(); close("FsCapture.exe");//通過進程名來結束進程 closebyid(4356);//通進程編號來結束進程 getchar(); }
進程(WINAPI),遍歷並查找樹狀的進程信息,實現控制系統進程