#include"window.h" #include"controls.h" #include"textthread.h" #include"pluginmanager.h" #include"confighelper.h" class LunaHost; class Pluginwindow:public mainwindow{ listbox* listplugins; Pluginmanager* pluginmanager; public: Pluginwindow(mainwindow*,Pluginmanager*); void on_size(int w,int h); void pluginrankmove(int); }; class Settingwindow:public mainwindow{ checkbox* ckbfilterrepeat; spinbox* g_timeout; spinbox* g_codepage; checkbox* g_check_clipboard; checkbox* readonlycheck; checkbox* autoattach; checkbox* autoattach_so; checkbox* copyselect; spinbox* spinmaxbuffsize; spinbox* spinmaxhistsize; gridlayout* mainlayout; lineedit* showfont; button* selectfont; public: Settingwindow(LunaHost*); }; class processlistwindow:public mainwindow{ gridlayout* mainlayout; lineedit* g_hEdit; button* g_hButton; listview* g_hListBox; button* g_refreshbutton; std::unordered_map> g_exe_pid; void PopulateProcessList(listview*,std::unordered_map>&); public: processlistwindow(mainwindow* parent=0); void on_show(); }; class HooksearchText:public mainwindow{ gridlayout* layout; lineedit* edittext; button* checkok; spinbox* codepage; public: HooksearchText(mainwindow*); void call(std::setpids); }; class Hooksearchsetting:public mainwindow{ gridlayout* layout; spinbox* spinduration; spinbox* spinoffset; spinbox* spincap; spinbox* spincodepage; lineedit* editpattern; lineedit* editmodule; lineedit* editmaxaddr; lineedit* editminaddr; spinbox* spinpadding; lineedit* editregex; button* start; public: Hooksearchsetting(mainwindow*); void call(std::setpids,std::wstring); }; class Hooksearchwindow:public mainwindow{ checkbox* cjkcheck; button* hs_default,*hs_text,*hs_user; gridlayout* layout; Hooksearchsetting* hooksearchsetting=0; HooksearchText* hooksearchText=0; public: Hooksearchwindow(LunaHost* parent); }; class LunaHost:public mainwindow{ Pluginwindow* pluginwindow=0; std::setattachedprocess; lineedit* g_hEdit_userhook; gridlayout* mainlayout; button* g_hButton_insert; button* btnplugin; //listbox* g_hListBox_listtext; listview*g_hListBox_listtext; multilineedit* g_showtexts; button* g_selectprocessbutton; button* btndetachall; button* btnsearchhooks; button* btnshowsettionwindow; //button* btnsavehook; processlistwindow *_processlistwindow=0; Settingwindow *settingwindow=0; Pluginmanager* plugins; Hooksearchwindow * hooksearchwindow=0; std::atomic hasstoped=false; bool on_text_recv(TextThread& thread, std::wstring& sentence); void on_text_recv_checkissaved(TextThread& thread); void on_thread_create(TextThread& thread); void on_thread_delete(TextThread& thread); void on_proc_connect(DWORD pid); void on_proc_disconnect(DWORD pid); void showtext(const std::wstring&text,bool clear); void updatelisttext(const std::wstring&text,LONG_PTR data); public: confighelper* configs; int64_t currentselect=0; bool check_toclipboard; bool check_toclipboard_selection; std::wstring defaultFont; bool autoattach; bool autoattach_savedonly; std::setautoattachexes; std::unordered_mapsavedhookcontext; std::setuserdetachedpids; std::setonceautoselectthread; void on_close(); LunaHost(); friend class Settingwindow; friend class Hooksearchwindow; private: void loadsettings(); void savesettings(); void doautoattach(); };