糯诺诺米团

人最宝贵的是生命。生命属于人只有一次。人的一生应当这样度过:当他回首往事的时候,不会因为碌碌无为、虚度年华而悔恨,也不会因为为人卑劣、生活庸俗而愧疚。...

MFC启用windows自带的软件时,在关闭的时候,手动杀死这个进程

思路:在程序中获取.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 ,进程没有成功杀死!");


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32716885/article/details/80345453
个人分类: 线程/进程
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

MFC启用windows自带的软件时,在关闭的时候,手动杀死这个进程

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭