上位机MFC实现强制关闭指定程序功能
例程运行界面如上。
在编辑框里添加要结束进程的名称,点击结束进程按钮就可以将输入进程关闭。
例如输入了例程自身的名称,可以将自己强制关闭。
结束进程按钮的源代码
- void CKillProcessDlg::OnOK()
- {
- UpdateData(TRUE);
- BOOL bResult;
- CString strTemp,strProcessName;
- HANDLE hSnapshot; //内存进程的“快照”句柄
- PROCESSENTRY32 ProcessEntry; //描述进程的结构
- vector<DWORD> vtPID; //进程ID容器
- //输入要结束的进程名称
- strProcessName = m_strProcessName;
- strProcessName.MakeLower();
- //返回内存所有进程的快照。参数为TH32CS_SNAPPROCESS取有的进程,忽略参数2;
- hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
- //获取要结束的进程名称对应的所有进程ID
- ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
- bResult = Process32First(hSnapshot,&ProcessEntry);//获取第一个进程
- while(bResult)
- {
- //判断是否为要结束的进程
- strTemp.Format("%s",ProcessEntry.szExeFile);
- strTemp.MakeLower();
- if(strTemp==strProcessName)
- vtPID.push_back(ProcessEntry.th32ProcessID);
- //获取下一个进程
- bResult = Process32Next(hSnapshot,&ProcessEntry);
- }
- //结束进程
- bResult = FALSE;
- vector<DWORD>::iterator it = vtPID.begin();
- for(;it!=vtPID.end();++it)
- {
- if(*it)
- {
- //获取进程句柄
- HANDLE hProcess;
- hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,*it);
- //结束进程
- if(hProcess)
- bResult = TerminateProcess(hProcess,0);
- if(!bResult)
- break;
- }
- }
- //
- if(bResult)
- {
- MessageBox("结束进程成功!");
- CDialog::OnOK();
- }
- else
- MessageBox("结束进程失败!");
-
- //CDialog::OnOK();
- }
复制代码 可以下载工程源代码参考:
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|