工控编程吧
标题:
上位机MFC实现强制关闭指定程序功能
[打印本页]
作者:
qq263946146
时间:
2019-9-28 11:00
标题:
上位机MFC实现强制关闭指定程序功能
(, 下载次数: 0)
上传
点击文件名下载附件
例程运行界面如上。
在编辑框里添加要结束进程的名称,点击结束进程按钮就可以将输入进程关闭。
例如输入了例程自身的名称,可以将自己强制关闭。
结束进程按钮的源代码
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();
}
复制代码
可以下载工程源代码参考:
(, 下载次数: 0)
上传
点击文件名下载附件
[MFC408]1[/MFC408]
[halcon]1[/halcon]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4