c++命令结束进程树
2015-11-30 20:50
363 查看
// 停止当前进程及其子进程
// 枚举所有的进程
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);
}
// 枚举所有的进程
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);
}
相关文章推荐
- C++中关于运算符 “.”和“->”的区分
- 【C语言提高12】间接赋值从0级指针到1级指针
- C语言根据路径打开文件内容
- codeforces 499B Lecture(map与string简单用法)
- 2015杭电新生赛1008游乐场【神坑】
- C++常量折叠
- 关于C++中各种运算符的总结和简要介绍
- C++11学习笔记8---错误处理
- C++11学习笔记7---资源回收RAII
- Ubuntu下C/C++man手册安装方法及使用方法
- 指针访问真的高效吗
- 黑马程序员——C语言循环、switch与if语句笔记和习题
- 【粗解】【通信编码】卷积编码器的简单实现
- C/C++结构体struct详解
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- 黑马程序员——C语言函数的返回值笔记和练习题
- wustoj 1056 C语言程序设计教程(第三版)课后习题10.5
- C语言中strdup函数使用方法
- Fast Compressive Tracking(快速压缩跟踪)算法的C++代码实现
- 浅析C语言中的数组及字符数组