|
|
**简体中文 | [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时重写此函数才有效。
|
|
|
|
|
|
**注意**
|
|
|
|
... | ... | |