资源简介

获取电脑进程列表,显示各个进程的CPU,内存,上行速度,下载速度。以及通过pid杀死进程的方法。使用winpcap库抓取各个进程的网络速率。

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “CpuCheck.h“
#include   
#include   
#include   


float CPUusage::get_cpu_usage()
{

FILETIME now;
FILETIME creation_time;
FILETIME exit_time;
FILETIME kernel_time;
FILETIME user_time;
int64_t system_time;
int64_t time;
int64_t system_time_delta;
int64_t time_delta;

DWORD exitcode;

float cpu = -1;

if (!_hProcess)
{
return -1;
}


GetSystemTimeAsFileTime(&now);

//判断进程是否已经退出  
GetExitCodeProcess(_hProcess &exitcode);
if (exitcode != STILL_ACTIVE) {
clear();
printf(“exitcode:%d process exit\n“ exitcode);
return -1;
}

//计算占用CPU的百分比  
if (!GetProcessTimes(_hProcess &creation_time &exit_time &kernel_time &user_time))
{
DWORD lasterr = GetLastError();
clear();
printf(“lasterr:%d process cpu\n“ lasterr);
return -1;
}
system_time = (file_time_2_utc(&kernel_time) + file_time_2_utc(&user_time))
/ _processor;
time = file_time_2_utc(&now);

//判断是否为首次计算  
if ((_last_system_time == 0) || (_last_time == 0))
{
_last_system_time = system_time;
_last_time = time;
return -2;
}

system_time_delta = system_time - _last_system_time;
time_delta = time - _last_time;

if (time_delta == 0) {
return -1;
}

cpu = (float)system_time_delta * 100 / (float)time_delta;
_last_system_time = system_time;
_last_time = time;
return cpu;
}

CPUusage::uint64_t CPUusage::file_time_2_utc(const FILETIME* ftime)
{
LARGE_INTEGER li;

li.LowPart = ftime->dwLowDateTime;
li.HighPart = ftime->dwHighDateTime;
return li.QuadPart;
}

int CPUusage::get_processor_number()
{
SYSTEM_INFO info;
GetSystemInfo(&info);
return info.dwNumberOfProcessors;
}




int CPUusage::get_memory_usage(int pid uint64_t* mem uint64_t* vmem)
{
PROCESS_MEMORY_COUNTERS pmc;
if (GetProcessMemoryInfo(OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION false pid) &pmc sizeof(pmc)))
{
if (mem) *mem = pmc.WorkingSetSize;
if (vmem) *vmem = pmc.PagefileUsage;
return 0;
}
return -1;
}



int CPUusage::get_io_bytes(uint64_t* read_bytes uint64_t* write_bytes)
{
IO_COUNTERS io_counter;
if (GetProcessIoCounters(GetCurrentProcess() &io_counter))
{
if (read_bytes) *read_bytes = io_counter.ReadTransferCount;
if (write_bytes) *write_bytes = io_counter.WriteTransferCount;
return 0;
}
return -1;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-09-20 18:15  ProcessNetRateDemo\
     目录           0  2017-09-20 18:15  ProcessNetRateDemo\Debug\
     目录           0  2017-09-20 18:11  ProcessNetRateDemo\ProcessNetRateDemo\
     文件        2448  2017-08-12 19:46  ProcessNetRateDemo\ProcessNetRateDemo\CpuCheck.cpp
     文件        2234  2017-08-15 11:38  ProcessNetRateDemo\ProcessNetRateDemo\CpuCheck.h
     目录           0  2017-09-20 18:14  ProcessNetRateDemo\ProcessNetRateDemo\Debug\
     目录           0  2017-09-20 18:15  ProcessNetRateDemo\ProcessNetRateDemo\Debug\ProcessN.97583C40.tlog\
     文件        2392  2017-09-20 18:14  ProcessNetRateDemo\ProcessNetRateDemo\Debug\ProcessNetRateDemo.Build.CppClean.log
     文件          86  2017-09-20 18:14  ProcessNetRateDemo\ProcessNetRateDemo\Debug\ProcessNetRateDemo.log
     文件       12499  2017-09-20 18:11  ProcessNetRateDemo\ProcessNetRateDemo\ProcessNetRateDemo.cpp
     文件        5571  2017-08-12 16:00  ProcessNetRateDemo\ProcessNetRateDemo\ProcessNetRateDemo.vcxproj
     文件        3529  2017-08-12 16:00  ProcessNetRateDemo\ProcessNetRateDemo\ProcessNetRateDemo.vcxproj.filters
     文件         165  2017-08-11 16:44  ProcessNetRateDemo\ProcessNetRateDemo\ProcessNetRateDemo.vcxproj.user
     文件        1792  2017-08-11 16:39  ProcessNetRateDemo\ProcessNetRateDemo\ReadMe.txt
     目录           0  2017-08-11 16:48  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\
     文件        1200  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\Plugin.h
     目录           0  2017-08-11 16:48  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\abstract\
     文件         799  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\abstract\Model.cpp
     文件         963  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\abstract\Model.h
     文件         818  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\abstract\View.cpp
     文件         935  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\abstract\View.h
     目录           0  2017-08-11 16:48  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\
     文件         791  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\Detail.cpp
     文件        1307  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\Detail.h
     文件        6626  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\DetailModel.cpp
     文件        2505  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\DetailModel.h
     文件       13863  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\DetailView.cpp
     文件        1960  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\detail\DetailView.h
     目录           0  2017-08-11 16:48  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\month\
     文件         775  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\month\Month.cpp
     文件        1298  2017-08-11 12:59  ProcessNetRateDemo\ProcessNetRateDemo\plugins_bak\month\Month.h
............此处省略77个文件信息

评论

共有 条评论