c++ - 在 c++/windows 中获取特定进程的当前 cpu 使用率

标签 c++ windows cpu cpu-usage pdh

我想在我的代码中计算特定应用程序的当前 CPU 使用率。我在互联网上查找并找到了适用于 Windows 的 pdh 库。当我尝试它时,我得到的是整体 CPU 使用率,而不是一个进程的 CPU 使用率。

PdhAddCounter(hquery, TEXT("\\Processor(_Total)\\% Processor Time"),0,&counter);

那么我如何处理这一行来获取特定进程的 CPU 使用率?我尝试用进程名称(资源管理器)替换 _Total。那时我的 cpu 使用率是 0。但我检查了资源监视器,一次打开多个窗口会使 cpu 使用率增加 20%。仍在日志文件中,CPU 使用率显示为 0。

谁能帮我解决这个问题?

提前致谢。

最佳答案

您需要使用 GetProcessTimes

不幸的是,它不会为您提供“CPU 使用率”,它会为您提供自进程启动以来的 CPU 时间量。因此,要获得 CPU 使用率,您需要获取一个样本,将其存储,然后在已知时间后获取另一个样本,然后计算时间(如果您想知道总使用率,则需要当然,将 usertimekerneltime 添加在一起)。

关于c++ - 在 c++/windows 中获取特定进程的当前 cpu 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095994/

相关文章:

c++ - 客户端和服务器

c++ - 如何在 cpp 中将 uint8_t[][] 转换为 char[]

c++ - 仅当 CMake 中的 header 更改时才重新链接共享库

cpu - 什么是时钟中断?

hardware - 估计PC(x86)上的过程能耗

c++ - 在 C++ 中自动/模板化生成测试 vector

c++ - 无法加载qt平台插件windows

mysql - 未定义对 `mysql_get_client_info' 的引用

asp.net - 使用 Interop 生成 `docx` 在终止 RDC 时不起作用

linux - 我们如何根据系统 CPU(而不是整体或用户 CPU)对 Linux 上的线程进行排序?