凌科网页精灵插件开发指南

凌科网页精灵中每个插件都是一个dll文件，都必须导出下面三个函数：
GetPlugInHTML, GetPlugInName, GetPlugInDescription;
它们的函数原型的pascal描述如下
  function GetPlugInHTML(AHandle: THandle;ASelectedText: PChar;
                   AResultHTHML: TResultHTML): Boolean;stdcall;
  procedure GetPlugInName(AValue: PChar);stdcall;
  procedure GetPlugInDescription(AValue: PChar);stdcall;
c描述为
  bool GetPlugInHTML(AHandle: HWND;ASelectedText: Char*;
                   AResultHTHML: TResultHTML);
  void GetPlugInName(char* AValue);
  void GetPlugInDescription(char* AValue);
其中 TResultHTML的pascal定义如下 
TResultHTML = record
    ReplaceHTML: PChar; //替换文字
    BodyHTML: PChar;//添加到<Body></Body>区的文字
    BodyTagHTML: PChar;//添加到<Body >中的文字，如<Body onload="show()">
    HeadHTML: PChar;//添加到<Head></Head>区中的文字
  end;
TResultHTML的c定义如下:
struct TResultHTML
{
  char* ReplaceHTML;
  char* BodyHTML;
  char* BodyTagHTML;
  char* HeadHTML;
};
1、导出函数描述
（1）  function GetPlugInHTML(AHandle: THandle;ASelectedText: PChar;
                   AResultHTHML: TResultHTML): Boolean;stdcall;
在用户点击插件对应的菜单时，主程序将调用此方法来得到插件返回的对网页的修改信息。
其中AHandle对应主窗口，也就是网页精灵的窗体句柄；ASelectedText代表用户此时在网页编辑器中选中的文本；AResultHTHML是返回值，将用ReplaceHTML将替换用户选择的文本，将把BodyHTML添加到网页的<Body></Body>区，将把BodyTagHTML添加到<Body >中,如在未调用插件的时候<Body> 在调用后bodyTagHTML＝‘onload="show()"’则调用后<Body onload="show()">，将HeadHTML添加到<Head></Head>区；
返回值代表此插件的运行是否成功。如果返回False，则主程序会忽略插件对网页的修改信息。
（2）procedure GetPlugInName(AValue: PChar);stdcall;返回值是AValue，它将做为菜单的标题，代表插件的名称。
（3）void GetPlugInDescription(char* AValue);返回值是AValue，它将做为此插件的功能描述。
注：ReplaceHTML BodyHTML BodyTagHTML HeadHTML最大长度为10000，GetPlugInName及GetPlugInDescription的返回值的最大长度为256
2 插件开发完毕后拷贝到网页精灵的安装目录的PlugIns目录下即可。
3 在Delphi中开发网页精灵插件的经验之谈，
（1）在用delphi中进行插件开发时，有时候要在程序中使用很长的字符串来拼接产生html文档，可以使用字符串常量、资源文件、单独的txt文件等形式存储这些字符串，但是缺点都比较多。我开发了一个控件TBigStringContainer（在Docs目录下），在设计时可以点击strings属性，在弹出的文本编辑器中输入像存储的字符串，在程序中调用GetString方法就可以得到存储的这些字符串
（2）我们提供了为用户选中的文本添加超链接的HyperLink插件和添加3D旋转文字的Roate3DText插件源代码。用Delphi开发，可以供您参考。
欢迎与我交流:about521@163.com   杨中科




