win11实现类似任务栏日期功能_2

上一篇https://blog.csdn.net/zdsji/article/details/132189286?spm=1001.2014.3001.5501

简单把功能给实现了,从dx11降到dx9了,因为dx9好用的接口ID3DXFont无了。如果用dx11的话写起来又比较麻烦,以后有时间改成dx11的再完善下结构。  

目前整个代码结构我的评价是,烂的要死,能跑就行。

因为做的资源监控么,网速监控用的是GetIfTable(),具体api官网上介绍的都挺详细的。这里只监控以太网和wifi

pRow->dwType == IF_TYPE_ETHERNET_CSMACD || pRow->dwType == IF_TYPE_IEEE80211

他这里拿到的是

 这个已发送和已接收的字节数,所以就是固定时间拿一下,然后求差值算的网速。

内存方面用的GlobalMemoryStatusEx,得到MEMORYSTATUSEX结构。

dwLength

结构大小(以字节为单位)。 在调用之前,必须设置此成员
GlobalMemoryStatusEx

dwMemoryLoad

一个介于 0 和 100 之间的数字,该值指定正在使用 (0 的物理内存的大致百分比表示不使用内存,100 表示) 使用完整内存。

ullTotalPhys

实际物理内存量(以字节为单位)。

ullAvailPhys

当前可用的物理内存量(以字节为单位)。 这是可以立即重复使用的物理内存量,而无需先将其内容写入磁盘。 它是备用列表、免费列表和零列表的大小之和。

ullTotalPageFile

系统或当前进程的当前已提交内存限制(以字节为单位)。 若要获取系统范围的已提交内存限制,请调用 GetPerformanceInfo

ullAvailPageFile

当前进程可以提交的最大内存量(以字节为单位)。 此值等于或小于系统范围的可用提交值。 若要计算系统范围的可用提交值,请调用 GetPerformanceInfo,并从 CommitLimit 的值中减去 CommitTotal 的值。

ullTotalVirtual

调用进程的虚拟地址空间的用户模式部分的大小(以字节为单位)。 此值取决于进程类型、处理器类型和操作系统的配置。 例如,对于 x86 处理器上的大多数 32 位进程,此值大约为 2 GB,32 位进程大约为 3 GB,这些进程在启用了 4 千兆字节优化 的系统上运行的大型地址感知。

ullAvailVirtual

当前处于调用进程的虚拟地址空间的用户模式部分的未保留和未提交的内存量(以字节为单位)。

ullAvailExtendedVirtual

保留。 此值始终为 0。

 其中用到的是ullTotalPhys总内存大小和ullAvailPhys可用内存,已用内存相减就行。

cpu利用率是有些问题的,目前我找到的方法就是GetSystemTimes这个接口

[out, optional] lpIdleTime

指向 FILETIME 结构的指针,用于接收系统空闲的时间量。

[out, optional] lpKernelTime

指向 FILETIME 结构的指针,它接收系统在内核模式下执行所花费的时间量 (包括所有进程中的所有线程) 。 此时间值还包括系统处于空闲状态的时间量。

[out, optional] lpUserTime

指向 FILETIME 结构的指针,该结构接收系统在用户模式下执行所花费的时间量 (包括所有进程中的所有线程) 。

 利用率=(内核时间+用户时间-空闲时间)/内核时间+用户时间。但怎么算都和任务管理器里的总利用率对不上,可能只能算程序当前运行核心的利用率?

gitee源码https://gitee.com/middle_driver/source-monitor

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值