获取全部进程终止指定进程--上位机VC
获取全部进程终止指定进程--上位机VC
功能展示
操作系统默认都带有一个任务管理器,可以查看当前运行的程序并对程序进行关闭等操作,当前例程也实现获取系统运行中全部进程,对指定进程关闭功能,效果如图。点击<获取全部进程 >可将运行中的全部进程显示出来,点击<终止指定进程>可将鼠标选择的进程关闭
要点提示
例程中对运行中的全部进程的获取可结合函数CreateToolhelp32Snapshot() Process32First()Process32Next()实现; 对指定进程进行关闭可结合函数OpenProcess()TerminateProcess()实现; 实现功能 1.新建基于对话框的应用程序
2.拖拽一列表控件,关联变量CListCtrl m_list; 添加两按钮<获取全部进程><终止指定进程>关联按钮的点击函数,实现按钮对应的功能 - #include <tlhelp32.h>
- void CGkbc8Dlg::OnGet()
- {
- m_list.DeleteAllItems();//清空行
- while(m_list.DeleteColumn(0));//清空列
- m_list.ModifyStyle(0,LVS_REPORT);//设置报表显示
- m_list.InsertColumn(0,"进程ID",LVCFMT_LEFT,80);//插入列
- m_list.InsertColumn(1,"进程名称",LVCFMT_LEFT,150);
- HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
- PROCESSENTRY32* info=new PROCESSENTRY32;
- info->dwSize=sizeof(PROCESSENTRY32);
- int i=0;
- if(Process32First(handle,info))
- {
- if(GetLastError()==ERROR_NO_MORE_FILES )
- {
- AfxMessageBox("No More Process");
- }
- else
- {
- CString id;
- id.Format("%d",info->th32ProcessID);
-
- m_list.InsertItem(i,id);
- m_list.SetItemData(i,info->th32ProcessID);
- id.Format("%s",info->szExeFile);
- m_list.SetItemText(i,1,id);
- i++;
复制代码- while(Process32Next(handle,info)!=FALSE)
- {
- id.Format("%5d",info->th32ProcessID);
-
- m_list.InsertItem(i,id);
- m_list.SetItemData(i,info->th32ProcessID);
- id.Format("%s",info->szExeFile);
- m_list.SetItemText(i,1,id);
- i++;
- }
- }
- }
- CloseHandle(handle);
- }
- void CGkbc8Dlg::OnButton2()
- {
- POSITION pos;
- pos=m_list.GetFirstSelectedItemPosition();
- int select=m_list.GetNextSelectedItem(pos);
- HANDLE h=OpenProcess(PROCESS_ALL_ACCESS,TRUE,m_list.GetItemData(select));
- if(h!=NULL)
- {
- TerminateProcess(h,0);
- }
- OnGet();//刷新列表显示
- }
复制代码我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|