设为首页 加入收藏

TOP

15.2.4 本地监控示例--各进程CPU占用率(3)
2013-10-07 14:38:13 来源: 作者: 【 】 浏览:58
Tags:15.2.4 本地 监控 示例 进程 CPU 占用

15.2.4  本地监控示例--各进程CPU占用率(3)

(7)在GetCpuUseageDlg.cpp的OnInitDialog()函数中添加如下代码,实现为列表控件加入两个列,然后启动定时器。

  1. 01  BOOL CGetCpuUseageDlg:: OnInitDialog()  
  2. 02  {  
  3. 03      m_lstCtrl_CpuUsage.InsertColumn(0, "进程名称", LVCFMT_LEFT, 160);  
  4. 04      m_lstCtrl_CpuUsage.InsertColumn(1, "CPU占用", LVCFMT_LEFT, 160);  
  5. 05      this->SetTimer(GETCPUTIMER, 1000, NULL);  
  6.                                 //开启定时器,每秒取CPU占用率1次  
  7. 06  }  

(8)为CGetCpuUseageDlg类添加WM_TIMER和WM_CLOSE消息,并在消息处理函数中添加如下代码:
  1. 01  void CGetCpuUseageDlg::OnTimer(UINT nIDEvent)   
  2. 02  {  
  3. 03      Process();  
  4. 04      CDialog::OnTimer(nIDEvent);  
  5. 05  }  
  6. 06  void CGetCpuUseageDlg::OnClose()   
  7. 07  {  
  8. 08      // TODO: Add your message handler code here and/or call default  
  9. 09      KillTimer(GETCPUTIMER);         //关闭定时器  
  10. 10      //释放内存空间  
  11. 11      int i=0;  
  12. 12      for(i=0; i<m_lstCtrl_CpuUsage.GetItemCount(); i++)  
  13. 13      {//程序退出时,释放和每个列表项相关的数据内存  
  14. 14          DWORD itemData = m_lstCtrl_CpuUsage.GetItemData(i);  
  15.                                         //得到列表索引的数据  
  16. 15          CPUUSEAGE_STRUCT *pCpuS = (CPUUSEAGE_STRUCT *)itemData;  
  17. 16          delete pCpuS;  
  18. 17          pCpuS = NULL;  
  19. 18      }  
  20. 19      CDialog::OnClose();  
  21. 20  }  

【代码解析】

CGetCpuUseageDlg::OnTimer()函数定时调用Process()函数获取进程信息,更新列表框进程占用CPU信息项。第9行当程序退出时关闭定时器。第11~18行释放程序分配存储进程相关信息的内存块。

注意:程序退出时应释放程序中分配的内存块,以免内存泄漏。

进程CPU占用率实例的运行结果如图15.7所示。

 
图15.7  各进程CPU占用率运行结果
本例通过封装好的CCpuUsage类来获取每个进程的CPU占用率。首先使用Timer消息,每秒一次地获取每个进程占用CPU率,然后刷新列表,为保证刷新时列表的显示不闪烁,采用了列表控件中每项外带自定义数据的方式实现。



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇15.3.3 封装好的网络传输单元--类.. 下一篇15.2.4 本地监控示例--各进程CPU..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: