相关文章推荐
爱看球的伤疤  ·  kotlin的 ...·  1 年前    · 
爱跑步的香瓜  ·  WPF: ...·  1 年前    · 

Qt笔记(六十七)之获取 计算CPU使用率

一.前言
楼主最近在获取电脑设备的一些,今天想获取和计算cpu的使用率,于是分享记录下

二.核心代码
主要是利用了 GetSystemTimes 这个系统API

void getCpu()
	// FILETIME 是一个用两个32位字节表示时间值的结构体
	//  dwLowDateTime 低位32位时间值。
	//  dwHighDateTime 高位32位时间值
	static FILETIME preidleTime;
	static FILETIME prekernelTime;
	static FILETIME preuserTime;
	FILETIME idleTime;
	FILETIME kernelTime;
	FILETIME userTime;
	// 三个参数分别为 cpu空闲时间 内核进程占用时间 用户进程占用时间
	// 函数执行成功返回true 执行失败返回false
	bool k = GetSystemTimes(&idleTime, &kernelTime, &userTime);
	qDebug() << "GetSystemTimes:" << k;
	if (!k)
		return "";
	quint64 x, y;
	int idle, kernel, user;
	x = (preidleTime.dwHighDateTime << 31) | preidleTime.dwLowDateTime;	
	y = (idleTime.dwHighDateTime << 31) | idleTime.dwLowDateTime;
	idle = y - x;
	x = (prekernelTime.dwHighDateTime << 31) | prekernelTime.dwLowDateTime;
	y = (kernelTime.dwHighDateTime << 31) | kernelTime.dwLowDateTime;
	kernel = y - x;
	x = (preuserTime.dwHighDateTime << 31) | preuserTime.dwLowDateTime;
	y = (userTime.dwHighDateTime << 31) | userTime.dwLowDateTime;
	user = y - x;
	int cpuPercent = (kernel + user - idle) * 100 / (kernel + user);
	preidleTime = idleTime;
	prekernelTime = kernelTime;