#include <TlHelp32.h>
#include <vector>
BOOL TraversalProcess1(OUT std::vector<PROCESSENTRY32> &vec)
{
/************************************************************************/
/*
typedef struct tagPROCESSENTRY32
{
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID; // this process
ULONG_PTR th32DefaultHeapID;
DWORD th32ModuleID; // associated exe
DWORD cntThreads;
DWORD th32ParentProcessID; // this process's parent process
LONG pcPriClassBase; // Base priority of process's threads
DWORD dwFlags;
CHAR szExeFile[MAX_PATH]; // Path 其实是进程名称
} PROCESSENTRY32;
*/
/************************************************************************/
vec.clear();
try
{
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnap != INVALID_HANDLE_VALUE)
{
PROCESSENTRY32 item;
item.dwSize = sizeof(item);
if (Process32First(hSnap, &item))
{
do
{
vec.push_back(item);
} while (Process32Next(hSnap, &item));
}
CloseHandle(hSnap);
}
}
catch (...)
{
OutputDebugStringA(__FUNCTION__);
return 0;
}
return vec.size() > 0;
}
int main()
{
std::vector<PROCESSENTRY32> vec;
std::cout << TraversalProcess1(vec) << endl;
for each (PROCESSENTRY32 var in vec)
{
printf("%d\t", var.th32ProcessID);
printf("%d\t", var.th32ParentProcessID);
printf("%S\r\n", var.szExeFile);
}
return 0;
}
原文:https://www.cnblogs.com/dailycode/p/12459274.html