#ifndef __LUNA_ENGINE_H #define __LUNA_ENGINE_H extern WCHAR* processName, processPath[MAX_PATH],processName_lower[MAX_PATH]; // cached extern uintptr_t processStartAddress, processStopAddress; extern uintptr_t processStartAddress, processStopAddress; class ENGINE{ public: const char* enginename; bool dontstop;//dont stop even if attached a engine bool is_engine_certain; //stop when match a engine ,even if not attached enum class CHECK_BY { ALL_TRUE, FILE, FILE_ALL,FILE_ANY, RESOURCE_STR, CUSTOM, }; CHECK_BY check_by; // const wchar_t* check_by_single; // std::vectorcheck_by_list; // std::functioncheck_by_custom_function; typedef std::function check_by_custom_function; typedef std::vector check_by_list; typedef const wchar_t* check_by_single; std::variantcheck_by_target; //virtual bool check_by_target(){return false;}; virtual bool attach_function()=0; virtual const char* getenginename(){ if(enginename)return enginename; return typeid(*this).name()+6; } ENGINE():enginename(nullptr),dontstop(false),is_engine_certain(true),check_by(CHECK_BY::ALL_TRUE){}; bool check_function(); }; #endif