| 获取全部进程终止指定进程--上位机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();//刷新列表显示
}
我们来演示下功能实现的整个过程 
   如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!    
 |