如何获取电脑实时的性能占用情况

凌乱哥 2017-12-20 05:45:58
获取CPU、内存、硬盘的占用比例,就如任务管理器里的百分比:
...全文
635 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-12-28
  • 打赏
  • 举报
回复
在MSDN里面搜“PDH”?
smwhotjay 2017-12-27
  • 打赏
  • 举报
回复
你把任务管理器拿来,用导出表查看相关dll api 用od调戏它
凌乱哥 2017-12-22
  • 打赏
  • 举报
回复
继续求问,任务管理器里的磁盘占用率算法
凌乱哥 2017-12-22
  • 打赏
  • 举报
回复
引用 5 楼 oyljerry 的回复:
http://blog.csdn.net/davebobo/article/details/51698496
这里面的磁盘使用率也不对,它计算的是物理存储率。而任务管理器里的磁盘占用率应该是跟磁盘读写相关的吧
shen_wei 2017-12-21
  • 打赏
  • 举报
回复
http://blog.csdn.net/xjbclz/article/details/51817437
许文君 2017-12-21
  • 打赏
  • 举报
回复

// 
// #define DIV 1024
// 
// LARGE_INTEGER liOldIdleTime = {0,0}; 
// LARGE_INTEGER liOldSystemTime = {0,0};
// 
// #define SystemBasicInformation 0 
// #define SystemPerformanceInformation 2 
// #define SystemTimeInformation 3
// #define WIDTH 7
// #define Li2Double(x) ((double)((x).HighPart) * 4.294967296E9 + (double)((x).LowPart))
// 
// typedef struct 
// { 
// 	DWORD dwUnknown1; 
// 	ULONG uKeMaximumIncrement; 
// 	ULONG uPageSize; 
// 	ULONG uMmNumberOfPhysicalPages; 
// 	ULONG uMmLowestPhysicalPage; 
// 	ULONG uMmHighestPhysicalPage; 
// 	ULONG uAllocationGranularity; 
// 	PVOID pLowestUserAddress; 
// 	PVOID pMmHighestUserAddress; 
// 	ULONG uKeActiveProcessors; 
// 	BYTE bKeNumberProcessors; 
// 	BYTE bUnknown2; 
// 	WORD wUnknown3; 
// } SYSTEM_BASIC_INFORMATION;
// 
// typedef struct 
// { 
// 	LARGE_INTEGER liIdleTime; 
// 	LARGE_INTEGER dwSpare[76]; 
// // 	DWORD  cb;
// // 	SIZE_T CommitTotal;
// // 	SIZE_T CommitLimit;
// // 	SIZE_T CommitPeak;
// // 	SIZE_T PhysicalTotal;
// // 	SIZE_T PhysicalAvailable;
// // 	SIZE_T SystemCache;
// // 	SIZE_T KernelTotal;
// // 	SIZE_T KernelPaged;
// // 	SIZE_T KernelNonpaged;
// // 	SIZE_T PageSize;
// // 	DWORD  HandleCount;
// // 	DWORD  ProcessCount;
// // 	DWORD  ThreadCount;
// } SYSTEM_PERFORMANCE_INFORMATION;
// 
// typedef struct 
// { 
// 	LARGE_INTEGER liKeBootTime; 
// 	LARGE_INTEGER liKeSystemTime; 
// 	LARGE_INTEGER liExpTimeZoneBias; 
// 	ULONG uCurrentTimeZoneId; 
// 	DWORD dwReserved; 
// } SYSTEM_TIME_INFORMATION;
// 
// typedef LONG (WINAPI *PROCNTQSI)(UINT,PVOID,ULONG,PULONG);
// 
// PROCNTQSI NtQuerySystemInformation;
// 
// 
// 
// 
凌乱哥 2017-12-21
  • 打赏
  • 举报
回复
引用 2 楼 pcradio 的回复:
CPU的
http://blog.csdn.net/stecdeng/article/details/56011240
内存的
https://www.cnblogs.com/waynecheng/archive/2011/11/08/2241265.html
第二个链接的不行,输出来的cout << "CPU利用率:" << cpu << "%" << " CPU空闲率:" <<cpuidle << "%" <<endl都是50和50,和任务管理器不一致
引用 3 楼 shen_wei 的回复:
http://blog.csdn.net/xjbclz/article/details/51817437
这个有点离题。。
引用 4 楼 xuddk727 的回复:
// //获得CPU使用率
// INT GetCpuUsage()
内存简单 GlobalMemoryStatusEx
这个代码编译不过
引用 5 楼 oyljerry 的回复:
http://blog.csdn.net/davebobo/article/details/51698496
这里的代码也不行,double CpuUseage()返回值要么是0要么是100
许文君 2017-12-21
  • 打赏
  • 举报
回复
// //获得CPU使用率
// INT GetCpuUsage()
// {
// 	SYSTEM_PERFORMANCE_INFORMATION SysPerfInfo; 
// 	SYSTEM_TIME_INFORMATION SysTimeInfo; 
// 	SYSTEM_BASIC_INFORMATION SysBaseInfo; 
// 	double dbIdleTime = 0; 
// 	double dbSystemTime = 0; 
// 	LONG status; 
// 
// 	NtQuerySystemInformation = (PROCNTQSI)GetProcAddress(GetModuleHandle("ntdll"),"NtQuerySystemInformation");
// 
// 	if (!NtQuerySystemInformation) 
// 		return -1;
// 
// 	// get number of processors in the system 
// 	status = NtQuerySystemInformation(SystemBasicInformation,&SysBaseInfo,sizeof(SysBaseInfo),NULL); 
// 	if (status != NO_ERROR) 
// 	{
// 		printf("\r\nLast error = %d\r\n",GetLastError());
// 		return -1;
// 	}
// 
// 	// get new system time 
// 	status = NtQuerySystemInformation(SystemTimeInformation,&SysTimeInfo,sizeof(SysTimeInfo),0); 
// 	if (status!=NO_ERROR) 
// 	{
// 		printf("\r\nLast error = %d\r\n",GetLastError());
// 		return -1;
// 	}
// 
// 	// get new CPU's idle time 
// 	status =NtQuerySystemInformation(SystemPerformanceInformation,&SysPerfInfo,sizeof(SysPerfInfo),NULL); 
// 	if (status != NO_ERROR) 
// 	{
// 		printf("\r\nLast error = %d\r\n",GetLastError());
// 		return -1;
// 	}
// 
// 	// if it's a first call - skip it 
// 	if (liOldIdleTime.QuadPart != 0) 
// 	{ 
// 		// CurrentValue = NewValue - OldValue 
// 		dbIdleTime = Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime); 
// 		dbSystemTime = Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
// 
// 		// CurrentCpuIdle = IdleTime / SystemTime 
// 		dbIdleTime = dbIdleTime / dbSystemTime;
// 
// 		// CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors 
// 		dbIdleTime = 100.0 - dbIdleTime * 100.0 / (double)SysBaseInfo.bKeNumberProcessors + 0.5;
// 
// 	}
// 
// 	// store new CPU's idle and system time 
// 	liOldIdleTime = SysPerfInfo.liIdleTime; 
// 	liOldSystemTime = SysTimeInfo.liKeSystemTime;
// 
// 	return (int)dbIdleTime;
// }
内存简单 GlobalMemoryStatusEx
阿源是少年 2017-12-20
  • 打赏
  • 举报
回复
CPU的
http://blog.csdn.net/stecdeng/article/details/56011240
内存的
https://www.cnblogs.com/waynecheng/archive/2011/11/08/2241265.html
zgl7903 2017-12-20
  • 打赏
  • 举报
回复

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧