工控编程吧
标题:
获取全部进程终止指定进程--上位机VC
[打印本页]
作者:
qq263946146
时间:
2016-12-7 20:00
标题:
获取全部进程终止指定进程--上位机VC
(, 下载次数: 2)
上传
点击文件名下载附件
获取全部进程终止指定进程--上位机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();//刷新列表显示
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/ce653c191db76e6dbb2be0d5aa137a69/0/0/w_19rujlv5nh.swf-albumId=6905743409-tvId=6905743409-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4