#pragma once #include "textthread.h" namespace Host { using ConsoleHandler = std::function; using ProcessEventHandler = std::function; using ThreadEventHandler = std::function; using HookEventHandler = std::function; using HookInsertHandler = std::function; using EmbedCallback = std::function; void Start(ProcessEventHandler Connect, ProcessEventHandler Disconnect, ThreadEventHandler Create, ThreadEventHandler Destroy, TextThread::OutputCallback Output, bool createconsole = true); void StartEx(std::optional Connect, std::optional Disconnect, std::optional Create, std::optional Destroy, std::optional Output, std::optional console, std::optional hookinsert, std::optional embed, std::optional warning); void InjectProcess(DWORD processId, const std::wstring locationX = L""); bool CreatePipeAndCheck(DWORD processId); void DetachProcess(DWORD processId); void InsertHook(DWORD processId, HookParam hp); void RemoveHook(DWORD processId, uint64_t address); void FindHooks(DWORD processId, SearchParam sp, HookEventHandler HookFound = {}); EmbedSharedMem *GetEmbedSharedMem(DWORD pid); TextThread *GetThread(int64_t handle); TextThread &GetThread(ThreadParam tp); void AddConsoleOutput(std::wstring text); void Warning(std::wstring text); inline int defaultCodepage = SHIFT_JIS; constexpr ThreadParam console{0, 0, 0, 0}; }