mirror of
https://github.com/zhongyang219/TrafficMonitor.git
synced 2026-10-19 14:31:49 +08:00
85 lines
2.9 KiB
C++
85 lines
2.9 KiB
C++
/*********************************************************
|
|
* TrafficMonitor 插件接口
|
|
* Copyright (C) by Zhong Yang 2021
|
|
* zhongyang219@hotmail.com
|
|
**********************************************************/
|
|
#pragma once
|
|
|
|
//插件显示项目的接口
|
|
class IPluginItem
|
|
{
|
|
public:
|
|
//获取显示项目的名称
|
|
virtual const wchar_t* GetItemName() const = 0;
|
|
|
|
//获取项目标签的文本
|
|
virtual const wchar_t* GetItemLableText() const = 0;
|
|
|
|
//获取项目数值的文本
|
|
//由于此函数可能会被频繁调用,因此不要在这里获取监控数据,
|
|
//而是在ITMPlugin::DataRequired函数中获取数据后保存起来,然后在这里返回获取的数值
|
|
virtual const wchar_t* GetItemValueText() const = 0;
|
|
|
|
//获取项目数值的示例文本
|
|
virtual const wchar_t* GetItemValueSampleText() const = 0;
|
|
};
|
|
|
|
|
|
//插件接口
|
|
class ITMPlugin
|
|
{
|
|
public:
|
|
int GetAPIVersion() const { return 1; }
|
|
|
|
/*
|
|
* 一个插件dll可以提供多个实现IPluginItem接口的对象,对应多个显示项目。
|
|
* 参数index为对象的索引,当它的值大于或等于0且小于IPluginItem接口的对象的个数时,
|
|
* 返回对象的IPluginItem接口的指针,其他情况应该返回空指针。
|
|
* 例如插件提供两个显示项目,则当index等于0或1时返回对应IPluginItem接口的对象,
|
|
* 其他值时必须返回空指针。
|
|
*/
|
|
virtual IPluginItem* GetItem(int index) = 0;
|
|
|
|
/*
|
|
* 主程序会每隔一定时间调用此函数,插件需要在函数里获取一次监控的数据
|
|
*/
|
|
virtual void DataRequired() = 0;
|
|
|
|
//选项设置对话框的返回值
|
|
enum OptionReturn
|
|
{
|
|
OR_OPTION_CHANGED, //选项设置对话框中更改了选项设置
|
|
OR_OPTION_UNCHANGED, //选项设置对话框中未更改选项设置
|
|
OR_OPTION_NOT_PROVIDED //未提供选项设置对话框
|
|
};
|
|
|
|
/*
|
|
* 主程序调用此函数以打开插件的选项设置对话框
|
|
* hParent 为父窗口的句柄
|
|
* 此函数不一定要重写。如果插件提供了选项设置界面,则应该重写此函数,并在最后返回OR_OPTION_CHANGED或OR_OPTION_UNCHANGED。
|
|
* 返回值为OR_OPTION_NOT_PRVIDED则认为插件不提供选项设置对话框。
|
|
*/
|
|
virtual OptionReturn ShowOptionsDialog(HWND hParent) { return OR_OPTION_NOT_PROVIDED; };
|
|
|
|
//插件信息的索引
|
|
enum PluginInfoIndex
|
|
{
|
|
TMI_NAME, //名称
|
|
TMI_DESCRIPTION, //描述
|
|
TMI_AUTHOR, //作者
|
|
TMI_COPYRIGHT //版权
|
|
};
|
|
|
|
/*
|
|
* 获取此插件的信息,根据index的值返回对应的信息
|
|
*/
|
|
virtual const wchar_t* GetInfo(PluginInfoIndex index) = 0;
|
|
};
|
|
|
|
/*
|
|
* 注意:插件dll需导出以下函数
|
|
* ITMPlugin* TMPluginCreateInstance();
|
|
* 函数创建一个实现了ITMPlugin接口的对象,并返回其指针。
|
|
* 对象的释放由调用者来完成。
|
|
*/
|