首先要包含头文件,帮助工具函数的头文件
#include <TlHelp32.h>

先说一个结构体,用于保存取得操作系统进程快照的信息
PROCESSENTRY32

typedef struct tagPROCESSENTRY32
{DWORD   dwSize; //结构体大小DWORD   cntUsage; //此进程引用次数计数器,已不再使用,总是0DWORD   th32ProcessID; // 当前进程ID号,进程表示符ULONG_PTR th32DefaultHeapID; //进程默认堆,已不再使用,总是0DWORD   th32ModuleID; // 进程模块IDDWORD   cntThreads;  //此进程开启的线程计数器DWORD   th32ParentProcessID;    // 父进程ID号LONG    pcPriClassBase; // 进程优先权DWORD   dwFlags; //标志,已不再使用CHAR    szExeFile[MAX_PATH];    // 进程的文件名
} PROCESSENTRY32;
typedef PROCESSENTRY32 *  PPROCESSENTRY32;
typedef PROCESSENTRY32 *  LPPROCESSENTRY32;

CreateToolhelp32Snapshot获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。

HANDLE
WINAPI
CreateToolhelp32Snapshot(DWORD dwFlags,//指定“快照”中需要返回的对象DWORD th32ProcessID //指定“快照”中需要返回的对象);

DWORD dwFlags 返回对象标志说明

// dwFlags
//
#define TH32CS_SNAPHEAPLIST 0x00000001 //在快照中包含在th32ProcessID中指定的进程的所有的堆
#define TH32CS_SNAPPROCESS  0x00000002 //在快照中包含系统中所有的进程
#define TH32CS_SNAPTHREAD   0x00000004 //在快照中包含系统中所有的线程
#define TH32CS_SNAPMODULE   0x00000008 //在快照中包含在th32ProcessID中指定的进程的所有的模块
#define TH32CS_SNAPMODULE32 0x00000010
#define TH32CS_SNAPALL      (TH32CS_SNAPHEAPLIST | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD | TH32CS_SNAPMODULE) //返回以上所有信息(进程、线程、堆和模块信息)
#define TH32CS_INHERIT      0x80000000 //声明快照句柄是可继承的

DWORD th32ProcessID参数说明:
指定将要快照的进程ID。如果该参数为0表示快照当前进程。该参数只有在设置了TH32CS_SNAPHEAPLIST或者TH32CS_SNAPMODULE后才有效,在其他情况下该参数被忽略,所有的进程都会被快照

Process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄

BOOL
WINAPI
Process32First(
HANDLE hSnapshot, //系统快照句柄
LPPROCESSENTRY32 lppe //PROCESSRNTRY32结构体指针
);

根据快照句柄取得第一个进程的PROCESSENTRY32信息
返回值,成功返回TRUE,失败返回FALSE

Process32Next 根据系统快照句柄,获得First之后其他的PROCESSENTRY32进程信息

BOOL
WINAPI
Process32Next(
HANDLE hSnapshot,
LPPROCESSENTRY32 lppe
);

实例如下:

#include <Windows.h>
#include <TlHelp32.h>
#include <stdio.h>PROCESSENTRY32 peSnap;int main()
{HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);BOOL bRet = TRUE;memset(&peSnap,0,sizeof(PROCESSENTRY32));peSnap.dwSize = sizeof(PROCESSENTRY32);if(hSnap == INVALID_HANDLE_VALUE){printf("Create snapshot error:%d\n",GetLastError());return 1;}bRet = Process32First(hSnap,&peSnap);while(bRet){printf("进程号:%6d-->进程名:%s\n",peSnap.th32ProcessID,peSnap.szExeFile);bRet = bRet && Process32Next(hSnap,&peSnap);}system("pause");return 0;
}

62.根据系统进程快照获得枚举系统进程PROCESSENTRY32、CreateToolhelp32Snapshot、Process32First、Process32Next相关推荐

  1. 【Qt Quick】系统进程快照并打印进程名

    1.头文件 #include <Windows.h> #include <TlHelp32.h> #pragma comment(lib,"user32.lib&qu ...

  2. linux系统进程管理工具,Linux系统进程管理工具

    对于Linxu系统运维工程师来说好的系统进程管理工具,就像一把利器,无坚不摧,可以使用这些工具发现造成性能问题可能原因,提升团队的工作效率,本篇知识提及一些简单常用系统管理工具包括了pstree.ps ...

  3. PROCESSENTRY32结构体 CreateToolhelp32Snapshot Process32First 和Process32Next

    文章目录 ```PROCESSENTRY32```结构体 参数解释 第一个参数 第二个参数 第三个参数 第四个参数 第五个参数 第六个参数 第七个参数 第八个参数 第九个参数 第十个参数 Create ...

  4. 使用VC2008制作简单大航海外传内存修改器

    作者 :小草 日期 :2010/7/4 始发于 http://bbs.evewind.net/read.php?tid=2815 程序源代码下载地址: http://code.google.com/p ...

  5. 病毒汇编逆向分析实例赏析

    病毒名称:    xxmb                                                                壳信息:      yoda's Protec ...

  6. 游戏里的多开-检测和反检测

    一.从生命周期的角度看游戏的多开检测 0x0 事前检测 当你启动第二个游戏的瞬间阻止你这个行为,防患于未然. 特点:不会涉及到封号,这是人为的一个功能. 0x1 事中检测 在游戏运行的过程中进行悄咪咪 ...

  7. 获取系统进程信息和进程依赖的dll信息--CreateToolhelp32Snapshot

    http://www.cnblogs.com/qintangtao/archive/2013/02/26/2933734.html CreateToolhelp32Snapshot函数通过获取进程信息 ...

  8. VC获取系统进程列表、查找进程、关闭进程

    1.获取系统进程列表 [cpp] view plain copy #include <tlhelp32.h>//声明快照函数头文件 ... PROCESSENTRY32 pe32; pe3 ...

  9. Hacker(六)----黑客藏匿之地--系统进程

    windows系统中,进程是程序在系统中的依次执行活动.主要包括系统进程和程序进程两种. 凡是用于完成操作系统各种功能的各种进程都统称为系统进程: 而通过启动应用程序所产生的进程则统称为程序进程. 由 ...

最新文章

  1. Android学习笔记18-自定义Seekbar拖动条式样
  2. mysql组合索引的命中情况
  3. PySC2星际争霸Ⅱ 强化学习环境搭建
  4. JavaScript --- 自定义优先级队列
  5. 高等数学上-赵立军-北京大学出版社-题解-练习5.6
  6. Crystal Reports Maximum Report Processing Jobs Limit
  7. 笨办法学 Python · 续 练习 29:`diff`和`patch`
  8. c语言输入数字字母个数字是什么意思,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  9. [代码]获取源页的控件值
  10. python坐标轴拉伸_python-Matplotlib垂直拉伸histogram2d
  11. mysql怎么分读写_MYSQL的读写分离
  12. win7工作组无法查看计算机名,win7系统无法查看工作组计算机怎么解决
  13. 小学生python游戏编程_适合刚入门Python小白的趣味游戏编程
  14. matlab 图例自定义,matlab实现自定义曲线图以及图例
  15. c语言入门这一篇就够了-学习笔记(一万字)
  16. 苹果mp3软件_学文案一代神器iPod的16年兴衰——苹果广告40年
  17. ubifs 分区格式化方法
  18. Ubuntu利用Xorg.conf配置双屏扩展显示
  19. MySQL游标无法获取数据-1329 - No data - zero rows fetched, selected, or processed
  20. 虚拟机VMWare Workstation最新官方原版 有效VMware7.1.4序列号 密钥 VMware7.1.4破解版破解方法 VMware7.1

热门文章

  1. 爬取酷狗音乐Top100_排行榜
  2. 天猫代运营排行,国内电商领域前十位
  3. 【iOS】—— nil、Nil、NULL和NSNull学习
  4. Android 8.0 手机上图标变成机器人解决方案
  5. ios客户端发现_动画屋活动获奖展示和获奖模块开发总结
  6. 手机如何换鸿蒙os,手机知识:怎么换鸿蒙系统
  7. 如何转Android车载工程师?这份《Android车载操作系统开发指南》为你助力
  8. 【论文泛读】XFlow: Cross-Modal Deep Neural Networks for Audiovisual Classification
  9. 【技术】天洑数据建模实施案例集锦(3)- 风力机轮毂强度快速评估
  10. c#中如何获取电脑硬件信息?山寨一个鲁大师