Feature: DLL executing parameters persistence and DLL auto-run
This commit is contained in:
73
server/2015Remote/PluginSettingsDlg.h
Normal file
73
server/2015Remote/PluginSettingsDlg.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#pragma once
|
||||
|
||||
#include "resource.h"
|
||||
#include "LangManager.h"
|
||||
#include "common/commands.h"
|
||||
#include "common/scheduler.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
// 前向声明
|
||||
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<DllInfo*>& dllList, CWnd* pParent = nullptr);
|
||||
virtual ~CPluginSettingsDlg();
|
||||
|
||||
enum { IDD = IDD_DIALOG_PLUGIN_SETTINGS };
|
||||
|
||||
// 静态方法:加载插件配置
|
||||
static std::vector<PluginConfig> LoadPluginConfigs();
|
||||
// 静态方法:保存插件配置
|
||||
static void SavePluginConfigs(const std::vector<PluginConfig>& configs);
|
||||
// 静态方法:获取配置文件路径
|
||||
static std::string GetPluginConfigPath();
|
||||
// 静态方法:根据配置更新 DllInfo(Patch)
|
||||
static void PatchDllList(std::vector<DllInfo*>& 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<DllInfo*>& m_DllList; // 引用主对话框的 DLL 列表
|
||||
std::vector<PluginConfig> m_Configs; // 插件配置列表
|
||||
int m_nSelectedIndex; // 当前选中的列表项索引
|
||||
|
||||
// 控件变量
|
||||
CListCtrl m_listPlugins;
|
||||
CComboBox m_comboRunType;
|
||||
CComboBox m_comboCallType;
|
||||
CComboBox m_comboMode;
|
||||
CEdit m_editInterval;
|
||||
CEdit m_editMaxCount;
|
||||
};
|
||||
Reference in New Issue
Block a user