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);