是一个进程,如果能获得它当前的CPU,Memory,磁盘使用等信息?
希望有原码观摩。
请各位高手多多帮忙。

解决方案 »

  1.   

    CreateToolhelp32Snapshot()函数创建系统快照,根据这个快照调用函数Process32First()和Process32Next()来获得进程中的各模块,各线程的信息,示例代码如下:HANDLE         hProcessSnap = NULL; 
    PROCESSENTRY32 pe32      = {0}; 
    FILETIME CreateTime,ExitTime,KernelTime,UserTime;
    LARGE_INTEGER l_Createtime,l_Exittime,l_Usertime,l_Kerneltime;
    CString s_priority,s_processID,s_threadcounts,s_exename,s_kerneltime,s_usertime;

    hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    pe32.dwSize = sizeof(PROCESSENTRY32); 
    if (Process32First(hProcessSnap, &pe32)) 
    {
    do 

    HANDLE hProcess; 
    hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); 
    if(hProcess!=NULL)

      GetProcessTimes(hProcess,&CreateTime,&ExitTime,&KernelTime,&UserTime);
      memcpy(&l_Kerneltime.QuadPart,&KernelTime.dwLowDateTime,2*sizeof(DWORD));
      memcpy(&l_Usertime.QuadPart,&UserTime.dwLowDateTime,2*sizeof(DWORD));
      s_kerneltime.Format("%6d s",_int64((_int64(l_Kerneltime.QuadPart)+_int64(l_Usertime.QuadPart))/10000000));
     s_processID.Format("%d",pe32.th32ProcessID);
     s_threadcounts.Format("%d",pe32.cntThreads);
     s_exename.Format("%s",pe32.szExeFile);
    }

    while (Process32Next(hProcessSnap, &pe32)); }