QQ登录

只需一步,快速开始

222上位机VC MFC获取系统运行中全部程序

[ 复制链接 ]

222上位机VC MFC获取系统运行中全部程序

222上位机VC MFC获取系统运行中全部程序
222上位机VC MFC获取系统运行中全部程序
功能展示
我们打开资源管理器软件都可以看到当前系统在运行的程序,我们当前例程也实现当前系统运行程序的获取与显示,我们可根据自己的程序开发需求,进一步对获取的程序进行操作,效果如图,点击<获得系统运行中全部程序>按钮,可将全部运行中程序实现罗列在列表框中;
要点提示
系统中运行的程序可以使用函数Process32First()Process32Next()组合实现;process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄;
BOOL WINAPI Process32First( HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
typedef struct tagPROCESSENTRY32 {
    DWORD dwSize; // 结构大小;
    DWORD cntUsage; // 此进程的引用计数;
    DWORD th32ProcessID; // 进程ID;
    DWORD th32DefaultHeapID; // 进程默认堆ID;
    DWORD th32ModuleID; // 进程模块ID;
    DWORD cntThreads; // 此进程开启的线程计数;
    DWORD th32ParentProcessID;// 父进程ID;
    LONG pcPriClassBase; // 线程优先权;
    DWORD dwFlags; // 保留;
    WCHAR szExeFile[MAX_PATH]; // 进程全名;
} PROCESSENTRY32;
此函数往往和函数Process32Next(HandlehsnapShot,LPPROCESSENTRY32 lppe)
搭配使用,用来枚举当前系统快照相关的所有进程。
实现功能
1.新建基于对话框的应用程序
2.拖拽一按钮控件关联函数
  1. void CGkbc8Dlg::OnGet()
  2. {
  3.         CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST1);
  4.         HANDLE toolhelp=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  5.         if(toolhelp==NULL)
  6.                 return ;
  7.         PROCESSENTRY32 processinfo;
  8.         int i=0;
  9.         CString str;
  10.         BOOL bContinue=Process32First(toolhelp,&processinfo);
  11.         while(bContinue)
  12.         {
  13.                 pListCtrl->InsertItem(i,"");
  14.                 pListCtrl->SetItemText(i,0,processinfo.szExeFile);
  15.                 str.Format("%08x",processinfo.th32ProcessID);
  16.                 pListCtrl->SetItemText(i,1,str);
  17.                 str.Format("%08x",processinfo.th32ParentProcessID);
  18.                 pListCtrl->SetItemText(i,2,str);
  19.                 bContinue=Process32Next(toolhelp,&processinfo);
  20.                 i++;
  21.         }
  22. }
复制代码
拖拽一列表控件ID为IDC_LIST1用于显示系统运行中全部程序
3.在对话框初始函数OnInitDialog()中对列表框控件初始化
  1. CListCtrl *pListCtrl = (CListCtrl *)GetDlgItem(IDC_LIST1);
  2.         pListCtrl->ModifyStyle(0,LVS_REPORT,0);
  3.         pListCtrl->SetExtendedStyle(LVS_EX_GRIDLINES);
  4.         pListCtrl->InsertColumn(0,"进程",LVCFMT_LEFT,150,0);
  5.         pListCtrl->InsertColumn(1,"ID",LVCFMT_CENTER,75,1);
  6.         pListCtrl->InsertColumn(2,"父进程",LVCFMT_CENTER,75,2);
复制代码
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:222.上位机VC MFC获取系统运行中全部程序.rar 
文件大小:130.07 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索