int main()
{
...
//强制终止进程
CString killProcessName;
killProcessName.Format(_T("%s.exe"), WINDOWTEXT);
DWORD dwProcessId = GetProcessIdFromName(killProcessName);
HANDLE handle = OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessId);
//HANDLE handle= OpenProcess(0, FALSE, dwProcessId);
TerminateProcess(handle, 0);
WaitForSingleObject(handle, INFINITE);
...
}
//通过执行文件名获得进程ID的方法
DWORD GetProcessIdFromName(CString name)
{
PROCESSENTRY32 pe;
DWORD id = 0;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize = sizeof(PROCESSENTRY32);
if( !Process32First(hSnapshot,&pe))
{
return 0;
}
do
{
pe.dwSize = sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot, &pe) == FALSE)
break;
if(lstrcmpi(pe.szExeFile, name) == 0)
{
id = pe.th32ProcessID;
break;
}
} while(TRUE);
CloseHandle(hSnapshot);
return id;
}