QQ登录

只需一步,快速开始

上位机MFC如何枚举系统当前进程

[ 复制链接 ]
我们可以结合两个函数Process32First,Process32Next来遍历当前打开 的全部进程
  1. void CDemoDlg::OnTest()
  2. {
  3.         CListCtrl* pList = (CListCtrl*)GetDlgItem(IDC_LIST);
  4.         pList->DeleteAllItems();
  5.         pList->SetRedraw(FALSE);

  6.         //获得当前进程的快照
  7.         HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  8.         if ((HANDLE)-1 == hSnapshot)
  9.         {
  10.                 return;
  11.         }

  12.         //进程信息
  13.         PROCESSENTRY32 ProcessInfo;
  14.         ProcessInfo.dwSize = sizeof(PROCESSENTRY32);

  15.         int n = 0;

  16.         //获得快照中第一个进程
  17.         BOOL bResult = Process32First(hSnapshot, &ProcessInfo);
  18.         if (!bResult)
  19.         {
  20.                 return;
  21.         }

  22.         while (bResult)
  23.         {
  24.                 //进程的可执行文件名
  25.                 pList->InsertItem(n, ProcessInfo.szExeFile);
  26.                 //进程的ID
  27.                 CString strText= _T("");
  28.                 strText.Format(_T("%08X"), ProcessInfo.th32ProcessID);
  29.                 pList->SetItemText(n, 1, strText);

  30.                 //获得快照中下一个进程
  31.                 bResult = Process32Next(hSnapshot, &ProcessInfo);

  32.                 n++;
  33.         }

  34.         //关闭快照
  35.         CloseHandle(hSnapshot);

  36.         pList->SetRedraw(TRUE);
  37. }
复制代码
IDC_LIST为我们自己添加的列表控件ID.


回复

使用道具 举报

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