您的位置:首页 > 其它

Windows查找和结束指定进程

2012-10-23 20:18 525 查看
做项目时需要根据名称来查找指定进程是否存在,以及结束指定进程,尝试了下可以用如下代码实现:

注:需要包含头文件"tlhelp32.h"

/************************************************************************/
// 功能:使用枚举进程的方法查找及结束指定名称的进程
// 作者:jovenchen
// 日期:2012-10-23 20:24:09
/************************************************************************/
/**
* @brief 查找指定进程是否存在
* @param szProcessName 进程名称
* @param pe 存放进程信息的结构体
* @return bool 是否存在
*/
bool FindProcessByName(const char* szProcessName, PROCESSENTRY32& pe)
{
PROCESSENTRY32 lpe =
{
sizeof(PROCESSENTRY32)
};
//创建进程快照
HANDLE hProcess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE == hProcess)
{
return false;
}
//获取第一个进程实例
BOOL isExist = Process32First(hProcess, &lpe);
//遍历进程
while (isExist)
{
if (!strcmp(lpe.szExeFile, szProcessName))
{
CloseHandle(hProcess);
memcpy(&pe, &lpe, sizeof(PROCESSENTRY32));
return true;
}
isExist = Process32Next(hProcess, &lpe);
}
CloseHandle(hProcess);
return false;
}

/**
* @brief 重命名文件
* @param strSrcName 原文件名
* @param strDestName 新文件名
* @return bool 返回是否成功
*/
bool KillProcess(const char* szProcessName)
{
PROCESSENTRY32 pe;
HANDLE hProcess;
if (FindProcessByName(szProcessName, pe))
{
hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
if (!TerminateProcess(hProcess, 0))
{
return false;
}
CloseHandle(hProcess);
}
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: