使用Windows计数器的方法(c++)

简介:
最近需要做一个具有简单功能的“任务管理器”,要求是获得当前进程列表及进程拥有者/进程内存使用量/PID的信息,还需要获得当前系统内存总量和已用内存量,在google、csdn、baidu、msdn查阅多时,基本都解决了,这里记录一下主要思路。

获得系统进程列表:
先用CreateToolhelp32Snapshot()函数生成系统进程快照,
然后用Process32First()和Process32Next()就可以获得进程名称和对应的PID了

对指定的进程,获得它的拥有者:
先用OpenProcess()打开指定进程,
再用OpenProcessToken()获得令牌,
再用GetTokenInformation()获得令牌信息(其中就包含进程拥有者的SID),
再用LookupAccountSid()将SID翻译成用户名

获得指定进程的内存使用量:(用性能计数器的方式获得)
先用PdhOpenQuery()打开一个查询,
再用PdhAddCounter()对这个查询添加计数器:
例子:
监控指定进程消耗CPU时间
\Process(%s)\% Processor Time %s是进程名(进程名为对应的应用程序名称去掉扩展名剩下的部分)
需要监控某个进程的内存使用情况,字符串如下:
\Process(%s)\Working Set %s是进程名

再用PdhCollectQueryData()收集查询信息,
再用PdhGetFormattedCounterValue()将查询值格式化,
最后调用PdhCloseQuery()结束查询
目录
相关文章
|
2月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
288 4
|
7月前
|
人工智能 机器人 C++
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
【C++/Python】Windows用Swig实现C++调用Python(史上最简单详细,80岁看了都会操作)
154 0
|
7月前
|
人工智能 机器人 编译器
【C++】Windows端VS code中运行CMake工程(手把手教学)
【C++】Windows端VS code中运行CMake工程(手把手教学)
425 0
|
15天前
|
存储 缓存 安全
硬盘数据恢复:恢复硬盘数据的9个实用方法(Windows版)
无论是工作文档、家庭照片,还是其他珍贵的数字资产,数据丢失总是一件让人头疼的事情。然而,当硬盘发生问题时,不必过于慌张——只要正确应对,许多数据都可以被成功恢复。本文将从常见数据丢失原因到具体恢复方法,为您提供全面的硬盘数据恢复指导。
|
2月前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
2月前
|
弹性计算 数据安全/隐私保护 Windows
阿里云国际版无法远程连接Windows服务器的排查方法
阿里云国际版无法远程连接Windows服务器的排查方法
|
3月前
|
存储 开发者 Windows
WINDOWS 环境变量设置方法
本文旨在帮助使用Windows电脑的开发者们为其设备配置环境变量,以更好地支持大模型应用的开发工作。文中详细介绍了三种配置方法:一是将环境变量设置为系统级变量;二是在命令行界面通过`SET`命令或`PowerShell`临时设置变量;三是借鉴MAC的方式,创建全局环境变量文件`.zshrc`进行配置。这些方法简单实用,便于根据实际需求选择适合的方式进行配置。
|
2月前
|
安全 Windows
Windows系统实现exe服务注册的方法都有哪些?
【10月更文挑战第5天】Windows系统实现exe服务注册的方法都有哪些?
402 0
|
2月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
53 0
|
2月前
|
网络协议 安全 调度
关闭Windows自动更新的6种方法
本文介绍了六种关闭Windows自动更新的方法,包括使用服务管理器、组策略编辑器、修改注册表、任务计划程序、网络连接设置和命令行。
1399 0