Dota2Patcher
 
Загрузка...
Поиск...
Не найдено
ProcessHandle.h
См. документацию.
1#pragma once
2#include <tlhelp32.h>
3
5public:
6 static DWORD get_PID_by_name(const wchar_t* ProcName) {
7 PROCESSENTRY32W PE32{ 0 };
8 PE32.dwSize = sizeof(PE32);
9
10 HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
11 if (hSnap == INVALID_HANDLE_VALUE) {
12 LOG::CRITICAL("(ProcessHandle) CreateToolhelp32Snapshot error: {}", GetLastError());
13 return 0;
14 }
15
16 DWORD PID = 0;
17 BOOL bRet = Process32FirstW(hSnap, &PE32);
18 while (bRet) {
19 if (wcscmp(ProcName, PE32.szExeFile) == 0) {
20 PID = PE32.th32ProcessID;
21 break;
22 }
23
24 bRet = Process32NextW(hSnap, &PE32);
25 }
26
27 CloseHandle(hSnap);
28 return PID;
29 }
30
31 static void open_process_handle(const DWORD processID, const DWORD accessRights) {
32 if (hProcess != NULL)
33 CloseHandle(hProcess);
34
35 hProcess = OpenProcess(accessRights, FALSE, processID);
36 }
37
38 static void close_process_handle() {
39 if (hProcess) {
40 CloseHandle(hProcess);
41 hProcess = NULL;
42 }
43 }
44
45 static bool is_valid_handle() {
46 return hProcess != NULL;
47 }
48
49 static DWORD get_last_error() {
50 return hProcess ? 0 : ::GetLastError();
51 }
52
53 static HANDLE get_handle() {
54 return hProcess;
55 }
56
57private:
58 static inline HANDLE hProcess = NULL;
59};
Definition ProcessHandle.h:4
static void close_process_handle()
Definition ProcessHandle.h:38
static HANDLE get_handle()
Definition ProcessHandle.h:53
static void open_process_handle(const DWORD processID, const DWORD accessRights)
Definition ProcessHandle.h:31
static bool is_valid_handle()
Definition ProcessHandle.h:45
static DWORD get_last_error()
Definition ProcessHandle.h:49
static DWORD get_PID_by_name(const wchar_t *ProcName)
Definition ProcessHandle.h:6