void KillProcess(CDuiString name)
{
// kill进程from名字
// 创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 pe;
// 实例化后使用Process32First获取第一个快照的进程前必做的初始化操作
pe.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(hSnapShot, &pe))
return;
// 如果句柄有效 则一直获取下一个句柄循环下去
while (Process32Next(hSnapShot, &pe))
{
// pe.szExeFile获取当前进程的可执行文件名称
CDuiString scTmp = pe.szExeFile;
// 比较当前进程的可执行文件名称和传递进来的文件名称是否相同
// 相同的话Compare返回0
if (!scTmp.Compare(name)) {
// 从快照进程中获取该进程的PID(即任务管理器中的PID)
DWORD dwProcessID = pe.th32ProcessID;
// OpenProcess 函数用来打开一个已存在的进程对象,并返回进程的句柄。
HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE, FALSE, dwProcessID);
::TerminateProcess(hProcess, 0);
CloseHandle(hProcess);
return;
}
}
}