| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> vc >> 平台系统 >> 文章正文
图形显示CPU内存利用率        【字体:
图形显示CPU内存利用率
作者:-    文章来源:-    点击数:    更新时间:2006-4-20

下载本文所附源代码


一、程序运行界面如下:

二、程序思想与要点:

1)、本程序分两种情况来获取CPU的利用率,NT下利用ntdll.dll中没有公开的API: NtQuerySystemInformation, 9x下利用注册表来获取CPU的利用率
code:NT

typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
    PROCNTQSI NtQuerySystemInformation;

    NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(
                                          GetModuleHandle("ntdll"),
                                         "NtQuerySystemInformation"
                                         );
    if (!NtQuerySystemInformation)
{
        return;
}

    // get number of processors in the system
    status = NtQuerySystemInformation(SystemBasicInformation,
                              &SysBaseInfo,sizeof(SysBaseInfo),NULL);
    if (status != NO_ERROR)
{
        return;
}
status = NtQuerySystemInformation(SystemTimeInformation,
                               &SysTimeInfo,sizeof(SysTimeInfo),0);
     if (status!=NO_ERROR)
{
          return;
}
     // get new CPU''s idle time
     status = NtQuerySystemInformation(SystemPerformanceInformation,
                               &SysPerfInfo,sizeof(SysPerfInfo),NULL);
     if (status != NO_ERROR)
{
          return;
}
     // if it''s a first call - skip it
     if (m_liOldIdleTime.QuadPart != 0)
     {
         // CurrentValue = NewValue - OldValue
         dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(m_liOldIdleTime);
         dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(m_liOldSystemTime);

          // CurrentCpuIdle = IdleTime / SystemTime
          dbIdleTime = dbIdleTime / dbSystemTime;

          // CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors
          dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;

          m_fNewUsges = (UINT)dbIdleTime;
     }

9x略

[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 利用底层键盘钩子屏蔽任意按…

  • 深入剖析MFC中Windows消息处…

  • VC++中进程与多进程管理的方…

  • Window 消息大全使用详解

  • 关于键盘输入

  • Windows多线程多任务设计初步

  • VC++实现Win2000下直接读写磁…

  • 多进程编程的相关知识总结(…

  • Win32环境下dll编程原理

  • Linux环境进程间通信(二):…

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |