-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgetprocs.cpp
More file actions
51 lines (43 loc) · 1.26 KB
/
Copy pathgetprocs.cpp
File metadata and controls
51 lines (43 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "../header/getprocs.h"
#include <windows.h>
#include <tlhelp32.h>
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
HANDLE GetProcessSnap() {
HANDLE hProcessSnap;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE){
perror("Failed to take a snapshot");
GetLastError();
}
return hProcessSnap;
}
bool GetFirstProcess(HANDLE snap, PROCESSENTRY32W& pe) {
pe.dwSize = sizeof(pe);
return Process32FirstW(snap, &pe);
}
bool GetNextProcess(HANDLE snap, PROCESSENTRY32W& pe) {
return Process32NextW(snap, &pe);
}
vector<ProcInfo> GetProcVector(HANDLE snap, PROCESSENTRY32W& pe){
vector<ProcInfo> procs;
if(GetFirstProcess(snap, pe)){
do {
ProcInfo p;
p.szExeFile = pe.szExeFile;
p.th32ProcessID = pe.th32ProcessID;
p.cntThreads = pe.cntThreads;
p.dwSize = pe.dwSize;
p.pcPriClassBase = pe.pcPriClassBase;
p.th32ParentProcessID = pe.th32ParentProcessID;
procs.push_back(p);
} while(GetNextProcess(snap, pe));
} else {
perror("GetProcVector has Failed");
GetLastError();
return {};
}
return procs;
}