获取系统进程列表的实现

获取系统进程列表的实现

20081022日星期三

通常,我们都用过操作系统自带的任务管理器,但是对于列表中的进程列表是如何获取的呢?我们可以使用给内存拍快照的方式获取内存中的进程列表信息。大概过程如下:

1、  初始化PROCESSENTRY32结构

PROCESSENTRY32 pe32 = {sizeof(PROCESSENTRY32)};    // 初始化结构

2、  给系统内进程拍快照

HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);     // 给系统内进程拍快照

3、  遍历所有进程快照,并将数据保存在结构中

// 遍历所有进程快照

  if (Process32First(hProcessSnap,&pe32))

  {

      do

      {

           char szID[56];

           wsprintf(szID,"%u",pe32.th32ProcessID);

 

           LVITEM item = {0};

           item.iItem = nItem;

           item.mask = LVIF_TEXT;

           item.pszText = (LPTSTR)pe32.szExeFile;                    // 进程名

           ::SendMessage(hWndList,LVM_INSERTITEM,0,(long)&item);     // 插入一条记录

 

           LVITEM lvi;

           lvi.iSubItem = 1;

           lvi.pszText = (LPTSTR)szID;                                 // 进程ID

           ::SendMessage(hWndList,LVM_SETITEMTEXT,nItem,(LPARAM)&lvi); // 插入记录的内容

           nItem++;

      }

      while (Process32Next(hProcessSnap,&pe32));

}

4、  关闭句柄

::CloseHandle(hProcessSnap);

上面代码都是Win32下编写的,同样可以在MFC下实现,但原理的都一样。

代码运行结果图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值