BOOL KillProcess(LPCWSTR szProcName) { HANDLE hProc = NULL; DWORD dwExitCode = 0; BOOL bFound = FALSE, bRtn = FALSE; HANDLE hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); DWORD dwsma = GetLastError(); // search process name in process list PROCESSENTRY32 procEntry={0}; procEntry.dwSize = sizeof(PROCESSENTRY32); Process32First(hndl,&procEntry); do { if (!lstrcmpi(procEntry.szExeFile, szProcName)) { bFound = TRUE; break; } } while(Process32Next(hndl,&procEntry)); // kill process if found it if (bFound) { hProc = OpenProcess(PROCESS_ALL_ACCESS, 0, procEntry.th32ProcessID); GetExitCodeProcess(hProc, &dwExitCode); if (hProc) { bRtn = TerminateProcess(hProc, dwExitCode); return bRtn; } } return FALSE; }