// cereatepross.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
//#include<WinBase.h>
#include<Windows.h>
#include<TlHelp32.h>
#include<atlstr.h>
using namespace std;
BOOL FindAndKillProcessByName(LPCTSTR strProcessName);
int _tmain(int argc, _TCHAR* argv[])
{
FindAndKillProcessByName(L"cmd.exe");
return 0;
}
BOOL FindAndKillProcessByName(LPCTSTR strProcessName)
{
if(NULL == strProcessName)
{
return FALSE;
}
//为进程创建快照,在快照中包含系统中的所有进程
HANDLE handle32Snapshot =CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == handle32Snapshot)
{
return FALSE;
}
PROCESSENTRY32 pEntry;
pEntry.dwSize = sizeof( PROCESSENTRY32 );
//Search for all the process and terminate it
//获得第一个进程的句柄
if(Process32First(handle32Snapshot, &pEntry))
{
BOOL bFound = FALSE;
if (!_tcsicmp(pEntry.szExeFile, strProcessName))
{
bFound = TRUE;
}
while((!bFound)&&Process32Next(handle32Snapshot, &pEntry))
{
//比较
if (!_tcsicmp(pEntry.szExeFile, strProcessName))
{
bFound = TRUE;
}
}
if(bFound)
{
CloseHandle(handle32Snapshot);
//打开一个已存在的进程对象,并返回进程的句柄
HANDLE handLe = OpenProcess(PROCESS_TERMINATE , FALSE, pEntry.th32ProcessID);
//结束指定进程和所有线程
BOOL bResult = TerminateProcess(handLe,0);
return bResult;
}
}
CloseHandle(handle32Snapshot);
return FALSE;
}