您的位置:首页 > 其它

强制关闭一个进程TerminateProcess

2014-06-02 16:33 239 查看
CString strProName; //xx.exe 进程名称
if (strProName.IsEmpty())
{
AfxMessageBox(_T("进程名字不能为空!"));
return;
}
HANDLE SnapShot, ProcessHandle;
SHFILEINFO shSmall;
PROCESSENTRY32 ProcessInfo;
CString strExeFile; //进程名字
strProName.MakeLower();  //
SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(SnapShot != NULL)
{
ProcessInfo.dwSize = sizeof(ProcessInfo);  // 设置ProcessInfo的大小
BOOL Status = Process32First(SnapShot, &ProcessInfo);

while(Status)
{
// 获取进程文件信息
SHGetFileInfo(ProcessInfo.szExeFile, 0, &shSmall, sizeof(shSmall), SHGFI_ICON|SHGFI_SMALLICON);

// 检测进程是否需要关闭
strExeFile = ProcessInfo.szExeFile;
strExeFile.MakeLower();  //小写

if(strProName.Compare(strExeFile) == 0)
{
// 获取进程句柄,强行关闭
ProcessHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessInfo.th32ProcessID);
TerminateProcess(ProcessHandle, 1);
//break;
}

// 获取下一个进程的信息
Status = Process32Next(SnapShot, &ProcessInfo);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息