#pragma once #include "resource.h" #include "LangManager.h" #include "common/commands.h" #include "common/scheduler.h" #include #include // 前向声明 struct DllInfo; // 插件配置结构体(用于 JSON 存储) struct PluginConfig { std::string Name; // 插件名称(作为唯一标识) std::string Md5; // MD5 int RunType; // 运行类型 int CallType; // 调用方式 unsigned char Mode; // 调度模式 unsigned char Flags; // 标志位 unsigned int Interval; // 间隔(秒) unsigned char MaxCount; // 最大次数 PluginConfig() : RunType(MEMORYDLL), CallType(CALLTYPE_IOCPTHREAD), Mode(SCH_MODE_NONE), Flags(0), Interval(0), MaxCount(0) {} }; // 插件设置对话框 class CPluginSettingsDlg : public CDialogLangEx { public: CPluginSettingsDlg(std::vector& dllList, CWnd* pParent = nullptr); virtual ~CPluginSettingsDlg(); enum { IDD = IDD_DIALOG_PLUGIN_SETTINGS }; // 静态方法:加载插件配置 static std::vector LoadPluginConfigs(); // 静态方法:保存插件配置 static void SavePluginConfigs(const std::vector& configs); // 静态方法:获取配置文件路径 static std::string GetPluginConfigPath(); // 静态方法:根据配置更新 DllInfo(Patch) static void PatchDllList(std::vector& dllList); protected: virtual void DoDataExchange(CDataExchange* pDX); virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() afx_msg void OnBnClickedBtnSave(); afx_msg void OnLvnItemchangedListPlugins(NMHDR* pNMHDR, LRESULT* pResult); private: void InitListCtrl(); void LoadPluginsToList(); void UpdateSelectedPluginInfo(); void SaveCurrentPluginConfig(); PluginConfig* FindConfig(const std::string& name); private: std::vector& m_DllList; // 引用主对话框的 DLL 列表 std::vector m_Configs; // 插件配置列表 int m_nSelectedIndex; // 当前选中的列表项索引 // 控件变量 CListCtrl m_listPlugins; CComboBox m_comboRunType; CComboBox m_comboCallType; CComboBox m_comboMode; CEdit m_editInterval; CEdit m_editMaxCount; };