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的小工具的内容,更多相关内容请关注PHP中文网(www.php.cn)!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

php与c#的区别有:1、语言类型系统不同,PHP属于动态,而C#为静态类型;2、使用的平台不同,PHP可以实现跨平台,而C#为Windows专属;3、编程范式不同,PHP支持面向对象、过程化和函数式编程,C#更倾向于面向对象编程;4、执行速度不同,PHP速度更快,C#相对较慢;5、应用场景不同,PHP应用于Web开发、服务器等,C#用于Windows桌面和Web应用程序。

sizeof()获取的结构类型元素的大小并不总是等于每个单独成员的大小。有时编译器会添加一些填充以避免对齐问题。所以尺寸可能会改变。当结构成员后面跟着一个尺寸较大的成员或位于结构末尾时,将添加填充。不同的编译器有不同类型的对齐约束。在C标准中,总对齐结构取决于实现。情况1在这种情况下,双精度z为8字节长,大于x(4字节))。因此又添加了4个字节的填充。此外,短类型数据y在内存中具有2字节空间,因此添加了额外的6字节作为填充。示例代码#include<stdio.h>structmyS

Inthistutorial,wewillbediscussingaprogramtocreateaC/C++codeformattingtoolwiththehelpofclangtools.SETUPsudoaptinstallpythonsudoaptinstallclang-format-3.5然后我们将在当前用户具有读写权限的位置创建一个Python文件。示例importoscpp_extensions=(".cxx",".cpp&

这里我们来看看什么是C或C++中的前自增和后自增。前自增和后自增都是自增运算符。但它们几乎没有什么区别。前自增运算符首先递增一个变量的值,然后将其分配给其他变量,但在后自增运算符的情况下,它首先分配给一个变量变量,然后增加值。示例#include<iostream>usingnamespacestd;main(){ intx,y,z; x=10; y=10;&nb

VScode中怎么开发置C/C++?怎么配置C/C++环境?下面本篇文章给大家分享一下VScode配置C/C++运行环境教程(保姆级教学),希望对大家有所帮助!

函数strcpy()是一个标准库函数。它用于将一个字符串复制到另一个字符串。在C语言中,它在“string.h”头文件中声明,而在C++语言中,它在cstring头文件中声明。它返回指向目的地的指针。这是C语言中strcpy()的语法,char*strcpy(char*dest,constchar*src);strcpy()的一些关键点。它将整个字符串复制到目标字符串中。它替换整个字符串而不是追加它。它不会改变源字符串。下面是C语言中strcpy()的示例:示例 在线演示#in

这里我们将了解如何计算任意数字的阶乘结果中尾随0的数量。因此,如果n=5,则5!=120。只有一个尾随0。对于20!,它将是4个零作为20!=2432902008176640000。最简单的方法就是计算阶乘并计算0。但对于较大的n值,这种方法会失败。所以我们将采用另一种方法。如果质因数是2和5,那么尾随零就会出现。如果我们计算2和5,我们就可以得到结果。为此,我们将遵循此规则。尾随0=阶乘(n)素因数中5的计数算法countTrailingZeros(n)begin &

在本文中,我们将讨论C++STL中putwchar()函数的工作原理、语法和示例。什么是putwchar()?putwchar()函数是C++STL中的内置函数,它在<cwchar>头文件中定义。putwchar()函数用于在标准输出设备上写入宽字符。该函数从参数中获取宽字符并将其写入系统的stdout或标准输出。该函数是putchar()的宽字符版本,putchar()在<cstdio>头文件中定义。语法putwchar(wchar_twidec);参数该函数接受以下参
