不断获取内存和CPU信息

来源:互联网 发布:seo基础入门教程 编辑:程序博客网 时间:2024/05/28 23:21

DWORD GetCPUInfoPro(COMMAND command, SOCKETclient)//获取内存CPU信息命令

{

         //用于保存信息

         MEMORYSTATUSEXmemstatusex;

         CStringmemory,mycpu;

         //设置内存结构大小

         memstatusex.dwLength= sizeof(memstatusex);

         //CPU

         HANDLEhEvent;

         BOOLres;

 

         FILETIMEpreidleTime;

         FILETIMEprekernelTime;

         FILETIMEpreuserTime;

 

         FILETIMEidleTime;

         FILETIMEkernelTime;

         FILETIMEuserTime;

 

         res= GetSystemTimes(&idleTime, &kernelTime, &userTime);

 

         preidleTime= idleTime;

         prekernelTime= kernelTime;

         preuserTime= userTime;

 

         hEvent= CreateEvent(NULL, FALSE, FALSE, NULL); // 初始值为 nonsignaled ,并且每次触发后自动设置为nonsignaled

 

         while(true){

                  //获取系统内存使用情况

                  GlobalMemoryStatusEx(&memstatusex);

                  memory.Format("总内存:%I64uM,已使用:%u%%",memstatusex.ullTotalPhys / 1024 / 1024, memstatusex.dwMemoryLoad);

                  WaitForSingleObject(hEvent,1000); //等待500毫秒

                  res= GetSystemTimes(&idleTime, &kernelTime, &userTime);

 

                  intidle = CompareFileTime(preidleTime, idleTime);

                  intkernel = CompareFileTime(prekernelTime, kernelTime);

                  intuser = CompareFileTime(preuserTime, userTime);

                  intcpu = (kernel + user - idle) * 100 / (kernel + user);

                  mycpu.Format("CPU使用率:%d",cpu);

                  COMMANDcmd;

                  memset((char*)&cmd,0, sizeof(cmd));

                  cmd.ID= GetCPUInfo;

                  strcpy((char*)cmd.lparam,memory+mycpu);

                  send(client,(char*)&cmd, sizeof(cmd), 0);

                  preidleTime= idleTime;

                  prekernelTime= kernelTime;

                  preuserTime= userTime;

         }

 

         returnTRUE;

}

0 0
原创粉丝点击