C/C++遍历进程和进程ID的小工具
当我们写某些具有破坏性的程序时就需要对进程进行遍历和提取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的小工具相关推荐
- C++ 遍历寻找指定进程,通过进程ID获取窗口句柄,以及HWND与CWnd之间转换
问题: 如题,如何遍历寻找指定进程?如何通过进程ID获取窗口句柄?HWND与CWnd之间是如何转换的? 解决: 1.HWND与CWnd之间的转换:使用 GetSafeHwnd 和 CWnd::From ...
- 【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. ...
- linux 线程id 进程id,在Linux上显示正在运行的进程的线程ID
在Linux上显示正在运行的进程的线程ID 在上Linux," ps -T"可以显示正在运行的进程的线程信息: # ps -T 2739 PID SPID TTY STAT TIM ...
- python获取当前进程id_Python进程,多进程,获取进程id,给子进程传递参数操作示例...
本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立 (可以通过s ...
- 小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?通过该试验加深对句柄的理解!!...
小实验:用创建进程()打开计算器,然后关闭进程句柄.再用打开进程(进程ID),使用两次,得到两个进程句柄.实验目的:这两个进程句柄都能控制这个进程吗? .版本 2 .程序集 窗口程序集1 .子程序 _ ...
- windows 获取当前进程/线程的ID、句柄和内核地址
获取当前进程 / 线程的 ID .句柄和内核地址 在用户态( RING3 )和内核态( RING0 )下,获取这些值的函数是不同的,而且这些函数的实现原理也是不同的,下面做个小结: 1. 用户态( R ...
- C# 对程序窗口进程和进程ID
获取当前激活窗口(顶置) GetForegroundWindow() [DllImport("user32.dll")]public static extern IntPtr Ge ...
- linux ps -elf 查看进程获取进程id
指令:ps -elf |grep java|grep -v grep |head -n 1 |awk '{printf $4}' 关于ps 指令,在部署应用程序到linux主机时候,会用到,如查询当前 ...
- Unix进程相关用户ID、用户组ID详解
文章目录 Unix文件相关属性 文件属性操作相关命令 进程相关ID 设置用户ID和设置组ID 文件访问权限 进程操作文件权限 更改用户ID和组ID 我们在使用类UNIX系统时,经常会涉及到各种ID,比 ...
最新文章
- sysbench tpcc-mysql_使用sysbench来测试MySQL性能的详细教程
- 七、DNS报文及抓包分析
- 开源 Web 应用最常见漏洞是 XSS 和 SQLI 漏洞
- 无水印pdf编辑器_偷偷告诉你如何编辑PDF文件,轻松解决这万恶的千古难题
- JAVA——Java连接MySQL数据库
- Codeforces Round 261 Div.2 D Pashmak and Parmida's problem --树状数组
- python循环语句for求和_for循环简介
- 求单链表结点的阶乘和
- 如何打造领英朋友圈_领英点赞,请摆好姿势!
- Webservice 的安全
- python---用python实现选择排序
- 拓端tecdat|R语言Poisson回归的拟合优度检验
- ASP.NET MVC 5 学习教程:数据迁移之添加字段
- 微软MDT 安装与配置(二)
- 在Google上做搜索引擎优化 (SEO),最重要的是哪几点?
- 正则的replace方法详解
- 【剑指 Offe】11. 旋转数组的最小数字
- kaggle验证手机收不到验证码
- android+桌面歌词,Android6.0系统适配桌面歌词效果
- percona-tool文档说明(4)- 监控类
热门文章
- 工程中DSP代码片断
- Castle ActiveRecord学习实践(2):构建配置信息
- 数据库实例服务被误删后
- 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
- 零基础零代码,也能一周学会动态报表?这个方法很多人都不知道
- 技术真的就不是那么重要了
- 我,35岁,程序员,华为工作10年,上个月公司说不再续约
- 正则表达式与html信息提取,基于正则表达式的HTML信息提取.pdf
- idea新建springboot后端到前端_基于SpringBoot+AntDesign的快速开发平台
- SQLite | SQLite 与 Pandas 比较篇之一