Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • T TrafficMonitor
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 813
    • Issues 813
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 3
    • Merge requests 3
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • zhongyang219
  • TrafficMonitor
  • Wiki
  • 插件开发指南

插件开发指南 · Changes

Page history
插件开发指南更新,添加英文版本 authored Dec 31, 2021 by Zhong Yang's avatar Zhong Yang
Hide whitespace changes
Inline Side-by-side
插件开发指南.md
View page @ 5c9495e5
**简体中文 | [English](Plugin Development Guide)**
从1.82版本开始,TrafficMonitor支持插件系统,支持由用户自己开发插件。
插件可以用于在任务栏和主窗口中显示自定义项目,例如时间、日期、天气、股票等信息。
......@@ -52,6 +54,14 @@
TrafficMonitor的源代码中提供了一个我写好的插件示例[PluginDemo](https://github.com/zhongyang219/TrafficMonitor/tree/master/PluginDemo),它提供了时间和日期显示,以及一个自绘示例。插件的开发者可以以此示例为参考来开发TrafficMonitor的插件。
如果你使用MFC开发插件,可以点击以下链接下载插件模板:
[TrafficMonitorPlugins/PluginTemplate at main · zhongyang219/TrafficMonitorPlugins (github.com)](https://github.com/zhongyang219/TrafficMonitorPlugins/tree/main/PluginTemplate)
下载后请将文件名和文件内容中的“`PluginTemplate`”替换为你的插件名字,并根据提示添加你的代码。
如果你使用纯Win32API、Qt或者其他界面框架开发插件,则不适用此插件模板。
# 接口说明
## ITMPlugin接口
......@@ -74,9 +84,9 @@ virtual IPluginItem* GetItem(int index) = 0;
**说明**
一个插件dll可以提供多个实现IPluginItem接口的对象,对应多个显示项目。此函数根据index的值返回对应的对象。
一个插件dll可以提供多个实现IPluginItem接口的对象,对应多个显示项目。此函数根据*index*的值返回对应的对象。
当index的值大于或等于0且小于IPluginItem接口的对象的个数时,返回对象的IPluginItem接口的指针,其他情况应该返回空指针。
当*index*的值大于或等于0且小于IPluginItem接口的对象的个数时,返回对象的IPluginItem接口的指针,其他情况应该返回空指针。
### DataRequired
......@@ -110,11 +120,11 @@ virtual OptionReturn ShowOptionsDialog(void* hParent);
返回一个枚举值。
OR_OPTION_CHANGED: 选项设置对话框中更改了选项设置
OR_OPTION_UNCHANGED: 选项设置对话框中未更改选项设置
OR_OPTION_NOT_PROVIDED: 未提供选项设置对话框
| 枚举项 | 说明 |
| ---------------------- | ------------------------------ |
| OR_OPTION_CHANGED | 选项设置对话框中更改了选项设置 |
| OR_OPTION_UNCHANGED | 选项设置对话框中未更改选项设置 |
| OR_OPTION_NOT_PROVIDED | 未提供选项设置对话框 |
如果在派生类中重写了此函数,则必须返回OR_OPTION_CHANGED或OR_OPTION_UNCHANGED,不能返回OR_OPTION_NOT_PROVIDED。
......@@ -134,7 +144,7 @@ virtual const wchar_t* GetInfo(PluginInfoIndex index) = 0;
**说明**
主程序调用此函数以获取此插件的信息。根据index的值返回对应的信息。
主程序调用此函数以获取此插件的信息。根据*index*的值返回对应的信息。
index的值请参见PluginInfoIndex类型的注释。
......@@ -142,6 +152,8 @@ index的值请参见PluginInfoIndex类型的注释。
![image-20211112194635969](images/image-20211112194635969.png)
注意:请勿返回空指针。
### OnMonitorInfo
**函数原型**
......@@ -158,6 +170,40 @@ virtual void OnMonitorInfo(const MonitorInfo& monitor_info);
MonitorInfo结构的对象,包含了主程序中取得的所有监控信息。
### GetTooltipInfo
**函数原型**
```c++
virtual const wchar_t* GetTooltipInfo();
```
**说明**
此函数不一定要重写。函数返回用于显示在鼠标提示中的文本,如果返回空字符串,则不在鼠标提示中添加任何文本。
注意:请勿返回空指针。
### OnExtenedInfo
**函数原型**
```c++
virtual void OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data);
```
**说明**
此函数不一定要重写。主程序会此需要的时候调用此函数以向插件传递更多信息,重写此函数可以接收主程序传递的信息。
*index*
信息的索引,用于区分向插件传递的信息。它在ExtendedInfoIndex枚举中定义。随着接口的更新,ExtendedInfoIndex枚举可能会增加更多的枚举项。
*data*
传递的数据,用字符串表示。
## IPluginItem接口
此接口为插件显示项目接口,你需要为你的插件提供的每一个显示项目编写对应的类,并实现此接口。
......@@ -176,6 +222,8 @@ virtual const wchar_t* GetItemName() const = 0;
<img src="images/image-20211112165501363.png" alt="image-20211112165501363" style="zoom:80%;" />
注意:请勿返回空指针。
### GetItemId
**函数原型**
......@@ -186,7 +234,9 @@ virtual const wchar_t* GetItemId() const = 0;
**说明**
函数返回一个字符串,用作显示项目的唯一ID,用于区分每个显示项目。应该确保此ID不会和其他插件显示项目重复。
函数返回一个字符串,用作显示项目的唯一ID,用于区分每个显示项目。应该确保此ID不会和其他插件显示项目重复。ID应该只包含字母和数字。
请勿返回空指针。
### GetItemLableText
......@@ -198,7 +248,11 @@ virtual const wchar_t* GetItemLableText() const = 0;
**说明**
函数返回一个字符串,作为显示项目的标签文本。
函数返回一个字符串,作为显示项目的标签文本。
如果IsCustomDraw函数返回true,则这里的返回值将会被忽略。
请勿返回空指针。
### GetItemValueText
......@@ -212,6 +266,10 @@ virtual const wchar_t* GetItemValueText() const = 0;
函数返回一个字符串,作为显示项目的数值的文本。
如果IsCustomDraw函数返回true,则这里的返回值将会被忽略。
请勿返回空指针。
**注意**
由于此函数可能会被频繁调用,因此不要在这里获取监控数据,而是在ITMPlugin::DataRequired函数中获取。在这里返回获取到的用于显示的字符串格式的数值。
......@@ -228,6 +286,10 @@ virtual const wchar_t* GetItemValueSampleText() const = 0;
函数返回一个字符串,作为显示项目数值的示例文本。这里返回的文本会用作“更换皮肤”对话框中预览图中显示的文本,同时也用于根据此字符串的长度计算任务栏显示项目的宽度。
如果IsCustomDraw函数返回true,则这里的返回值将会被忽略。
请勿返回空指针。
### IsCustomDraw
**函数原型**
......@@ -254,7 +316,7 @@ virtual int GetItemWidth() const
**说明**
此函数用于获取显示区域的宽度。只有当CustomDraw函数返回true时重写此函数才有效。
此函数用于获取显示区域的宽度。只有当IsCustomDraw函数返回true时重写此函数才有效。
**注意**
......
Clone repository

TrafficMonitor Wiki 导航

首页

  • 主窗口 | Main Window
  • 任务栏窗口
  • 右键菜单
  • 选项设置
    • 主窗口设置
    • 任务栏窗口设置
    • 常规设置
  • 硬件监控功能
  • 选择监控的网络连接
  • 更换皮肤功能
  • 通知区图标
  • 历史流量统计
  • 配置和数据文件
  • 插件开发指南 | Plugin Development Guide

更新日志 - Update Log

常见问题 - Frequently Asked Questions

已知问题