HANDLE m_hProcess; DWORD m_processId; std::atomic<bool> m_isWatching; int m_checkInterval; std::thread m_watchThread; mutable std::mutex m_mutex; std::function<void(DWORD)> m_onProcessExit; mutable std::string m_lastError; ;

// Process control bool terminateProcess();

// Process information uintptr_t getModuleBaseAddress(const std::string& moduleName) const; std::vector<ProcessInfo> getAllProcesses() const;

bool GameProcessWatcher::openProcessById(DWORD processId) PROCESS_VM_OPERATION

void GameProcessWatcher::closeProcessHandle() if (m_hProcess != nullptr) CloseHandle(m_hProcess); m_hProcess = nullptr; m_processId = 0;

// Callbacks void setOnProcessExit(std::function<void(DWORD)> callback);