枚举流程(以进程为例)
-
创建相应类型的快照
参数:
返回值:快照句柄,供枚举函数使用 -
循环获取快照内容
参数:
PROCESSENTRY32结构体定义:
示例代码
VOID MyProcess::EnumProcess() {
// 创建进程型快照
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap == INVALID_HANDLE_VALUE){
std::cout << "failed to create snapshot" << std::endl;
}
else{
// 存储进程信息的结构体
PROCESSENTRY32 pe32 = {0};
pe32.dwSize = sizeof(PROCESSENTRY32);
BOOL enumStatus = Process32First(hSnap, &pe32);
int i = 0;
while (enumStatus){
std::cout << pe32.th32ProcessID << ", " << pe32.szExeFile << ", " << pe32.th32ParentProcessID << std::endl;
i++;
enumStatus = Process32Next(hSnap, &pe32);
}
std::cout << "process num: " << i << std::endl;
}
}
API
包含在头文件<tlhelp32.h>
中
枚举进程
CreateToolhelp32Snapshot
Process32First
Process32Next
枚举线程
CreateToolhelp32Snapshot
Thread32First
Thread32Next
枚举DLL
CreateToolhelp32Snapshot
Module32First
Module32Next