导航

WB Editor 插件工作原理的解剖[yysun]

Posted on 2004-08-01 19:47  yysun  阅读(1330)  评论(0编辑  收藏  举报

WB Editor 可以通过插件可以丰富其功能。比如,目前已经发布的拼写检查插件、快速排版、语法加亮插件等等。

WB Editor 插件是外挂的软件模块,它件编译成 DLL 的形式。只要把它放到 WB Editor 的运行目录,WB Editor 能自动识别它。删除插件 DLL 也不影响 WB Editor 的基本功能。一个插件可以有多个命令,每个命令可以用来实现一个功能。比如一个检查插件有多个命令,分别检查英语、法语、德语、西班牙语 ...。

要了解 WB Editor 的插件的工作原理,首先看什么是 WB Editor 插件。

插件是一个实现了 IWBEditorPlugIn 接口的类。

 

public interface IWBEditorPlugIn
{
    string GetPluginName();
    string[] GetCommands(string parentCommand);
    int QueryStatus(string name);
    void ExecuteCommand(string name);
}

 

WB Editor 启动的时候自动扫描程序运行目录下面的所有 DLL,查找实现了 IWBEditorPlugIn 接口的类。找到后动态载入插件类,调用它的 GetPluginName 方法查询插件名称,并把这个名称显示在 Plugin 菜单下面。接着继续用 GetCommands 来查询插件命令名称,并把它们显示在插件名称菜单下面。这就实现了一个插件多个命令的功能。GetCommands 可以返回 null,表示没有命令,而插件名称就成为唯一的命令。

如果用户点击了插件菜单,WB Editor 就调用 ExecuteCommand 来执行用户选择的命令。这时候程序运行的控制权就交到插件手里了。

那么,插件有怎么控制 WB Editor 呢?这就需要用到 WBEditorService 类了。WB Editor 一开始运行,就已经预先初始化好了 WBEditorService, 插件可以

- 用 WBEditorService.GetEditorContent 获取编辑器中的内容。
- 用 WBEditorService.SetEditorContent 设置新的编辑内容。
- 用 WBEditorService.GetSelection 获取编辑器被选中的内容。
- 用 WBEditorService.InsertText 向编辑器中插入内容。
- 还有作文字替换的函数、获取 COM IHTMLElement,IHTMLDocument,RSS Item XmlDocument 等等的高级功能函数。

WB Editor 插件接口标准和参考程序: http://www.wbeditor.com/content/view/34/44

WB Editor 插件可以用 C#, VB.NET 或者 Delphi 8 来做,因为是 .NET 一家子嘛。
做法是:
1.创建一个 Class Library,Add reference IWBEditorPlugIn.dll
2.创建一类实现 IWBEditorPlugIn 接口,以及插件的功能。
3.编译后,把得到的 DLL 复制到 WB Editor 运行目录下。重新运行 WB Editor,就能看到 Plugins 菜单下有新的插件了。

有兴趣者欢迎试试。