// 停止当前进程及其子进程
// 枚举所有的进程
HANDLE hSnapshot;
hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 创建快照
if (INVALID_HANDLE_VALUE != hSnapshot)
{
PROCESSENTRY32 process;
memset(&process, 0, sizeof(process));
process.dwSize = sizeof(PROCESSENTRY32); // 注意 必不可少
BOOL first = ::Process32First(hSnapshot, &process);
// 循环列出进程信息
while (first)
{
// 终止
if (processName.CompareNoCase(process.szExeFile) == 0)
{
// 结束当前进程
/*HANDLE hPro = OpenProcess(PROCESS_TERMINATE, FALSE, process.th32ProcessID);
if (hPro != NULL)
{
TerminateProcess(hPro, 0);
CloseHandle(hPro);
}*/
// 停止当前进程及其子进程
sprintf_s(szBuf, "taskkill /PID %d /T /F", process.th32ProcessID);
system(szBuf);
}
first = ::Process32Next(hSnapshot, &process);
}
::CloseHandle(hSnapshot);
}