当我们写某些具有破坏性的程序时就需要对进程进行遍历和提取ID

对于上述功能,我们先介绍几个API

1.CreateToolhelp32Snapshout function

得到进程、模块或者线程的快照

语法如下:

HANDLE WINAPI CreateToolhelp32Snapshot(_In_ DWORD dwFlags,_In_ DWORD th32ProcessID
);

第一个参数:快照中包含了系统的一部分,参数如下:

我们这里用TH32CS_SNAPPROCESS

快照包含了系统里面的所有进程。

第二个是关于 PROCESSENTRY32结构体

语法如下:

typedef struct tagPROCESSENTRY32 {DWORD     dwSize;DWORD     cntUsage;DWORD     th32ProcessID;ULONG_PTR th32DefaultHeapID;DWORD     th32ModuleID;DWORD     cntThreads;DWORD     th32ParentProcessID;LONG      pcPriClassBase;DWORD     dwFlags;TCHAR     szExeFile[MAX_PATH];
} PROCESSENTRY32, *PPROCESSENTRY32;

这描述了一个入口,这个入口是当快照被调用时系统地址空间里面的进程被读取。

这里只介绍szExeFile[MAX_PATH]和

th32ParentProcessID:这是创建进程后的进程的标识(父进程)

szExeFile:进程里面可执行文件的名字

下面是源代码!部分函数没有讲解,但可以通过注释或者字面意思可以了解

#include <Windows.h>
#include <stdio.h>
#include <TlHelp32.h>int main()
{HANDLE hProceessnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);if (hProceessnap == INVALID_HANDLE_VALUE){printf_s("创建进行快照失败\n");return -1;}else{PROCESSENTRY32 pe32;pe32.dwSize = sizeof(pe32);BOOL hProcess = Process32First(hProceessnap, &pe32);char buff[1024];while (hProcess){wsprintf(buff, "进程名:%s--------------------进程ID:%d", pe32.szExeFile, pe32.th32ParentProcessID);printf_s("%s\n", buff);memset(buff, 0x00, 1024);hProcess = Process32Next(hProceessnap, &pe32);}}CloseHandle(hProceessnap);return 0;
}

运行结果如下

C/C++遍历进程和进程ID的小工具相关推荐

  1. C++ 遍历寻找指定进程,通过进程ID获取窗口句柄,以及HWND与CWnd之间转换

    问题: 如题,如何遍历寻找指定进程?如何通过进程ID获取窗口句柄?HWND与CWnd之间是如何转换的? 解决: 1.HWND与CWnd之间的转换:使用 GetSafeHwnd 和 CWnd::From ...

  2. 【Python7】csv/excel/matplotlib,排序/树遍历,线/进程,文件/xml操作,百度人脸API,aiohttp/hal/restful/curl

    文章目录 1.csv 2.excel 3.matplotlib 4.时间复杂度 5.顺序表/链表 6.六种排序 6.1 选择 6.2 插入 6.3 希尔 6.4 冒泡 6.5 快排 6.6 归并 7. ...

  3. linux 线程id 进程id,在Linux上显示正在运行的进程的线程ID

    在Linux上显示正在运行的进程的线程ID 在上Linux," ps -T"可以显示正在运行的进程的线程信息: # ps -T 2739 PID SPID TTY STAT TIM ...

  4. python获取当前进程id_Python进程,多进程,获取进程id,给子进程传递参数操作示例...

    本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立  (可以通过s ...

  5. 小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?通过该试验加深对句柄的理解!!...

    小实验:用创建进程()打开计算器,然后关闭进程句柄.再用打开进程(进程ID),使用两次,得到两个进程句柄.实验目的:这两个进程句柄都能控制这个进程吗? .版本 2 .程序集 窗口程序集1 .子程序 _ ...

  6. windows 获取当前进程/线程的ID、句柄和内核地址

    获取当前进程 / 线程的 ID .句柄和内核地址 在用户态( RING3 )和内核态( RING0 )下,获取这些值的函数是不同的,而且这些函数的实现原理也是不同的,下面做个小结: 1. 用户态( R ...

  7. C# 对程序窗口进程和进程ID

    获取当前激活窗口(顶置) GetForegroundWindow() [DllImport("user32.dll")]public static extern IntPtr Ge ...

  8. linux ps -elf 查看进程获取进程id

    指令:ps -elf |grep java|grep -v grep |head -n 1 |awk '{printf $4}' 关于ps 指令,在部署应用程序到linux主机时候,会用到,如查询当前 ...

  9. Unix进程相关用户ID、用户组ID详解

    文章目录 Unix文件相关属性 文件属性操作相关命令 进程相关ID 设置用户ID和设置组ID 文件访问权限 进程操作文件权限 更改用户ID和组ID 我们在使用类UNIX系统时,经常会涉及到各种ID,比 ...

最新文章

  1. sysbench tpcc-mysql_使用sysbench来测试MySQL性能的详细教程
  2. 七、DNS报文及抓包分析
  3. 开源 Web 应用最常见漏洞是 XSS 和 SQLI 漏洞
  4. 无水印pdf编辑器_偷偷告诉你如何编辑PDF文件,轻松解决这万恶的千古难题
  5. JAVA——Java连接MySQL数据库
  6. Codeforces Round 261 Div.2 D Pashmak and Parmida's problem --树状数组
  7. python循环语句for求和_for循环简介
  8. 求单链表结点的阶乘和
  9. 如何打造领英朋友圈_领英点赞,请摆好姿势!
  10. Webservice 的安全
  11. python---用python实现选择排序
  12. 拓端tecdat|R语言Poisson回归的拟合优度检验
  13. ASP.NET MVC 5 学习教程:数据迁移之添加字段
  14. 微软MDT 安装与配置(二)
  15. 在Google上做搜索引擎优化 (SEO),最重要的是哪几点?
  16. 正则的replace方法详解
  17. 【剑指 Offe】11. 旋转数组的最小数字
  18. kaggle验证手机收不到验证码
  19. android+桌面歌词,Android6.0系统适配桌面歌词效果
  20. percona-tool文档说明(4)- 监控类

热门文章

  1. 工程中DSP代码片断
  2. Castle ActiveRecord学习实践(2):构建配置信息
  3. 数据库实例服务被误删后
  4. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  5. 零基础零代码,也能一周学会动态报表?这个方法很多人都不知道
  6. 技术真的就不是那么重要了
  7. 我,35岁,程序员,华为工作10年,上个月公司说不再续约
  8. 正则表达式与html信息提取,基于正则表达式的HTML信息提取.pdf
  9. idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台
  10. SQLite | SQLite 与 Pandas 比较篇之一