Win32API 枚举出当前正在运行的进程
使用Win32API来枚举当前进程
首先需要了解的一个函数就是CreateToolhelp32Snapshot函数,需要用到#include "tlhelp32.h"头文件
这个函数的作用是给系统正在运行的进程建立一个进程快照。
函数原型
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
);
函数参数
dwFlags
指定快照中包含的系统内容,这个参数能够使用下列数值(常量)中的一个或多个。
TH32CS_INHERIT(0x80000000) - 声明快照句柄是可继承的。
TH32CS_SNAPALL - 在快照中包含系统中所有的进程和线程。
TH32CS_SNAPHEAPLIST(0x00000001) - 在快照中包含在th32ProcessID中指定的进程的所有的堆。
TH32CS_SNAPMODULE(0x00000008) - 在快照中包含在th32ProcessID中指定的进程的所有的模块。
TH32CS_SNAPPROCESS(0x00000002) - 在快照中包含系统中所有的进程。
TH32CS_SNAPTHREAD(0x00000004) - 在快照中包含系统中所有的线程。
H32CS_SNAPALL = (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE)
th32ProcessID
指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照。
接下来写个例子用来打印出当前所有进程名和进程ID:
int main()
{LPCWSTR pwszProcName = NULL;HANDLE hProcess = NULL;HANDLE hProcSnap = INVALID_HANDLE_VALUE;PROCESSENTRY32W pe32w;hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProcSnap == INVALID_HANDLE_VALUE) {goto L_Cleanup;}ZeroMemory(&pe32w, sizeof(PROCESSENTRY32W));pe32w.dwSize = sizeof(PROCESSENTRY32W);if (!Process32FirstW(hProcSnap, &pe32w)) {goto L_Cleanup;}wprintf(L"PID \t ProcessName\t\n");do {wprintf(L"%u \t %s\t\n", pe32w.th32ProcessID, pe32w.szExeFile);//需要的话可以在这里使用OpenProcess获取进程的句柄hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pe32w.th32ProcessID);if (NULL == hProcess) {//获取进程句柄失败}else {//TODO:}} while (Process32NextW(hProcSnap, &pe32w));L_Cleanup:return 0;
}
打印结果:
Win32API 枚举出当前正在运行的进程相关推荐
- linux查看进程ppid,pidof命令从运行的进程中以名称查找出进程号PID/PPID横向大到小展示...
1.释义 从运行的进程中以名称查找出进程号PID/PPID横向大到小展示 2.系统帮助 PIDOF(8) Linux System Administrator's Manual PIDOF(8) NA ...
- c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程
很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程. -- Magesh Maruthamuthu(作者) 很多次,你可能遇见过系统 ...
- WMI技术介绍和应用——查询正在运行的进程信息
在<WMI技术介绍和应用--使用VC编写一个半同步查询WMI服务的类>一文中,我们介绍到了一个半同步查询WMI类的框架.本文将是该技术的一个应用,介绍如何使用WMI技术查询正在运行的进程信 ...
- linux环境下ps命令行,Linux系统ps命令详解:查看正在运行的进程
ps命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息.ps命令有多种不同的使用方法,这常常给初学者带来困惑.在各种Linux论坛上,询问ps命令语法的帖子屡见不鲜,而出现这 ...
- 如何在 Linux 中找出内存消耗最大的进程
很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程.我相信,你可能已经运行了下文中的命令以进行检查.如果没有,那你尝试过哪些其他的命 ...
- Android5.1.+ getRunningAppProcesses()获取运行中进程(第三方开源库)
google可能为了安全考虑,在5.1.+后调用activitymanager.getRunningAppProcesses()方法只能返回你自己应用的进程,那如何在5.1.+后获取运行中进程呢?一个 ...
- 为什么建议一个容器中只运行一个进程
文章首发于:https://www.cnblogs.com/JasonCeng/p/14814888.html 在云原生与容器化时代浪潮下,大多数新手的普遍认识是"容器=虚拟机", ...
- teradata查看正在运行的进程_使用 Oracle GoldenGate 进行实时数据集成
使用 Oracle GoldenGate 进行实时数据集成 了解如何安装.设置和配置 Oracle GoldenGate 以轻松实现 Oracle Database 10g 和 11g 之间数据的无缝 ...
- Linux中查看所有正在运行的进程
你可以使用ps命令.它能显示当前运行中进程的相关信息,包括进程的PID.Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息.ps命令能提供一份当前进程的快照.如果你想状态可以自动刷新,可 ...
最新文章
- sql移除数据中的换行符和回车符
- 如何优雅的实现 Spring Boot 接口参数加密解密?
- SDCC 2016 中国软件开发者大会盛大开幕
- Android Studio 填坑指南
- 【Fragment】管理机制
- ASP.NET Core的Kestrel服务器
- 第一篇: 词向量之Word2vector原理浅析
- pl/sql command window 初步接触
- 接口测试用例_【学习】接口测试用例编写和测试关注点
- 两路服务器型号,两路服务器 核数
- eps倾斜摄影矢量化采集毕业设计_eps倾斜摄影矢量化dlg采集
- PHP5.4连接sqlserver
- php bootstrap 分页 查询,深入了解Bootstrap table表格插件(二)前后端分页模糊查询...
- 格式工厂 wav 比特率_Mac音乐格式转换工具
- 关于MATLAB中使用latex语法
- java基于ssm的学校教务管理系统的设计与实现
- 自学考试应该怎样答题才能更高分?
- Shiro原理流程,代码示例
- 解决deepin系统中某磁盘的文件为只读文件
- 51单片机PWM(电机调速)这个可以用在智能小车的调试
热门文章
- Codeforces 1060D Social Circles 思想转化
- 百融金服、趣店、中航信面试总结
- 2022 年面向初学者的15 个计算机视觉项目创意案例
- 科研文字工作者收藏的网站(Yama整理自用)
- 金融工程利率期限结构matlab,2016年武汉大学金融工程实验报告固守内容+利率期限结构及MATLAB应用...
- django1.11 mysql配置_使用Django1.11创建简单的资产管理平台
- 经典蓝牙与低功耗蓝牙BLE开发基础知识:服务、特征、属性、UUID
- Permission权限管理——隐私权限具体说明
- 计算机现代教育三大特征,现代教育技术试题和答案
- Gitolite + repo 搭建安卓源码开发环境