思路:在程序中获取.exe对应的ID,再由TerminateProcess删除进程即可
以下是一个简单的小例子,仅提供代码流程思路进行供参考
假设,现在要删除的".exe"文件名是
CString processName
保存的地址是
CString processPath
代码流程如下:
第一步:添加头文件
#include <tlhelp32.h>
第二步:获取id
PROCESSENTRY32 pe;
MODULEENTRY32 me;
DWORD id = 0;
HANDLE mehandle;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS , 0);
pe.dwSize = sizeof(PROCESSENTRY32)
BOOL ret = Process32First(hSnapshot , &pe);
if(!ret)
return -1;
while(1)
{
pe.dwSize = sizeof(PROCESSENTRY32);
if(Process32Next(hSnapshot , &pe) == FALSE )
break;
if(processName.CompareNoCase(pe.szExeFile) == 0)
{
id = pe.th32ProcessID;
//获取当前进程所在路径
mehandle = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE , id);
me.dwSize = sizeof(MODULEENTRY32);
Module32First(mehandle , &me);
processPath = me.szExeFile;
break;
}
}
CloseHandle(hSnapshot);
return id;
第三步:获取id号所对应的进程句柄
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS , FALSE ,id);
第四步:杀死进程
BOOL killProcess = TerminateProcess(hProcess , 0);
if(!killProcess)
AfxMessageBox(L"killProcess == FALSE ,进程没有成功杀死!");