1. 程式人生 > >C++通過程序名獲取程序控制代碼

C++通過程序名獲取程序控制代碼

記錄下一段,比較常用的程式碼。
// 強殺定期刪除程序
void CDogThread::Quit()
{
	// 結束強殺定期刪除程序
	HANDLE hProcess = GetProcessHandle(L"LdFileOnTimeDel.exe");
	if (hProcess != NULL)
	{
		TerminateProcess(hProcess, 0);
	}
}

//通過程序ID獲取程序控制代碼
HANDLE CDogThread::GetProcessHandle(int nID)
{
	return OpenProcess(PROCESS_TERMINATE, FALSE, nID);
}

//通過程序名獲取程序控制代碼
HANDLE CDogThread::GetProcessHandle(LPCWSTR lpName)
{
	HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	if (INVALID_HANDLE_VALUE == hSnapshot) 
	{
		return NULL;
	}
	PROCESSENTRY32 pe = { sizeof(pe) };
	BOOL fOk;
	for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) 
	{
		if (!_tcscmp(pe.szExeFile, lpName)) 
		{
			CloseHandle(hSnapshot);
			return GetProcessHandle(pe.th32ProcessID);
		}
	}
	return NULL;
}
該程式碼功能:強殺某個程序,採用TerminateProcess(hProcess, 0);此時需要獲取的就是hProcess的程序控制代碼,採用的方式就是遍歷程序名進行匹配。