#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::set pids); }; 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::set pids, 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::set attachedprocess; 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; Font uifont; bool autoattach; bool autoattach_savedonly; std::set autoattachexes; std::unordered_map savedhookcontext; std::set userdetachedpids; void on_close(); LunaHost(); friend class Settingwindow; friend class Hooksearchwindow; private: void loadsettings(); void savesettings(); void doautoattach(); };