用MFC设计一个如windows资源管理器中监控cpu使用量的程序,能动态地显示一个数据的值并且画出图。主要是动态地显示出其值(cpu的使用率)请高手帮忙。如果有代码实现的话,可发到,如果有什么思路的也好。我现在的主要困难是,对MFC中的函数不甚了解,还有就是不知到如何动态地刷新程序,请大家不吝指教。谢谢!

解决方案 »

  1.   

    经常有人问这类问题,在论坛中搜索一下就有答案了,给你两个连接参考一下:
    http://topic.csdn.net/u/20080821/16/A1645DF5-8569-494B-B4EA-81D82E0CFBDC.htmlhttp://topic.csdn.net/u/20081014/15/B423B3D9-6010-41C0-A8AC-A00B8A38383E.html
      

  2.   

    动态刷新程序用OnTimer函数
      

  3.   

    http://www.codeproject.com/KB/system/Task_Manager_Extension.aspx
      

  4.   

    使用pdh的API最简单. LONG GetProcessCPUUsage() 
    { HQUERY          hQuery; 
    HCOUNTER        hCounter; 
    PDH_FMT_COUNTERVALUE  fmtValue; 
    DWORD          ctrType; 
    typedef HANDLE  PDH_HQUERY; 
    typedef HANDLE  PDH_HCOUNTER; char PathBuffer[MAX_PATH] = {0}; 
    ZeroMemory(PathBuffer,sizeof(PathBuffer)); 
    _snprintf(PathBuffer,sizeof(PathBuffer) - 1,"\\Process(%s)\\%c Processor Time","explorer",'%'); if (PdhOpenQuery(0,0,&hQuery) == ERROR_SUCCESS) 

    if (PdhAddCounter(hQuery,PathBuffer,0,&hCounter) == ERROR_SUCCESS) 

    LONG Start = 0; 
    LONG End = 0; for (UINT i = 0 ; i < 2; i++) 

    if (PdhCollectQueryData(hQuery) == ERROR_SUCCESS) 

    if (PdhGetFormattedCounterValue(hCounter,PDH_FMT_LONG,&ctrType,&fmtValue) == ERROR_SUCCESS) 

    if (i == 0) 

    Start = fmtValue.longValue; 

    else 

    End = fmtValue.longValue; 
    if (End > Start) 

    PdhCloseQuery(hQuery); 
    return (End - Start); 

    else 

    PdhCloseQuery(hQuery); 
    return End; 



    else 

    break; 


    else 

    break; 

    Sleep(1000); 


    PdhCloseQuery(hQuery); 

    return -1; 
    } 以上代码得到explorer的CPU使用率,自己改下就能适用于所有系统进程.
      

  5.   

    不好意思,说得不是很清楚,其实我是想画出cpu使用记录的那样的记录过程的曲线。其实我并不是用于记录cpu的,只是个比方。重点应该是在画图方面,而不是api函数的调用。