1. 程式人生 > >進程(WINAPI),遍歷並查找樹狀的進程信息,實現控制系統進程

進程(WINAPI),遍歷並查找樹狀的進程信息,實現控制系統進程

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),遍歷並查找樹狀的進程信息,實現控制系統進程