双色球插件开发说明文档Word格式.docx
《双色球插件开发说明文档Word格式.docx》由会员分享,可在线阅读,更多相关《双色球插件开发说明文档Word格式.docx(57页珍藏版)》请在冰豆网上搜索。
它们在软件中的表现为(左高级、右常规)
这里展示的是过滤器的一级界面,高级过滤在点击
后会触发二级界面。
在1.04版500WANSSQ里提供了插件管理功能,目前功能还很简单,只是实现了最重要的插件升级功能,关于插件的启用禁用,排序分类,使用统计等等将在以后的升级版中完成。
(如果文档阅读不方便请从视图中选择文档结构图)
插件开发方法
下面逐步举例说明如何开发500WANSSQ过滤插件
针对习惯使用不同开发工具的程序员提供了delphi版和VC版说明
本文相关源码已包含在双色球Plus目录下
[翻页]
[Delphi]
一过滤插件开发说明
(相关代码参照plus\\forplugins\delphi\ssqPublicDefine.pas)
过滤插件只须实现并导出插件入口函数/EntryFunction(此入口函数非指Win32Executeble系统入口函数EP)即可。
----------------------------------------------------------------------------------------------------------------------
EntryFunction定义如下
TssqPlgFilterIntfFunction=function:
PssqPlgFilterIntfData;
stdcall;
//PssqPlgFilterIntfData是结构体指针,下边再说明
也就是定义并实现这样一个函数
functionpluginEntry():
Pointer;
export;
同时在导出部分申明
exports
pluginEntryIndex1;
500WANSSQ识别插件是通过编号为1的导出函数,所以函数名称无限制
EntryFunction返回一个指向TssqPlgFilterIntfData结构体的指针
TssqPlgFilterIntfData定义如下:
PssqPlgFilterIntfData=^TssqPlgFilterIntfData;
TssqPlgFilterIntfData=record
sign:
DWORD;
//识别码$03809663
guid:
array[0..37]ofchar;
publishkey:
PCHAR;
//releasesign
privatekey:
//developsignlinktomachineid
softwareid:
//产品编号
//开发授权:
hardware+privatekey
//发布授权:
softwarecrc+publishkey
fltName:
//过滤器名称
fltAuthor:
fltVersion:
fltDiscrib:
//描述
fltAction:
function(constactId:
Integer;
constactin:
actout:
Pointer):
//升级
fltclass:
//过滤类别12
fltminorclass:
//过滤类别2下的12对应高级的不同模板(1只有1种,所以不区分)
pguiCreation:
//一级UI创建函数PFltGUIPanelCreation
pInputWndCreation:
//二级UI创建函数PFltInputWndCreation
pinputWndAction:
f_initcallback:
procedure(IG,II:
IInterface;
time:
Integer);
f_decodeArgstr:
function(pszArgStr:
PChar):
f_itemfilter:
function(pcode:
pByte;
codelen:
Integer):
f_itemcheck:
function(pcode:
plErr,psErr:
PInteger;
pszConditionsArray:
PChar;
pConditionResultArray:
PBOOL;
pConditionsValueArray:
pConditionsCount:
PInteger):
BOOL;
end;
Sign:
过滤插件标识符要求等于16进制的$03809663
guid:
插件唯一标识,不允许重复。
比如'
{381948E8-E4F3-4FE4-B2CC-3F03D19C7B97}'
publishkey、privatekey、softwareid:
开发授权发布授权以及注册用,目前无效,可以为空
fltName:
插件名称(比如:
匹配过滤,号码生克),不能与其它已存在过滤插件重名;
fltAuthor:
作者
fltVersion:
版本号
fltDiscrib:
插件描述;
fltAction:
行为响应事件回调,不是必须的。
包含3个参数
actID表示事件id
C_ACT_INIT=1001;
//插件初始化
C_ACT_UPDATE=1002;
//插件初更新
C_ACT_CALL=1003;
//插件传调
actin,actout:
分别表示事件发生时的输入内容和输出buffer(将在后面详细介绍用法)
fltclass:
插件过滤类型,目前定义常规和高级(数值表示为1和2)
同时它还决定后面fltminorclass、pguiCreation、pInputWndCreation几个参数的意义,后文会做详细说明
fltminorclass:
在fltclass为1和2的情况下才有意义,表示调用默认过滤模版类ID
pguiCreation:
仅当fltclass为0时有意义。
表示创建UI面板的函数指针
pInputWndCreation:
表示创建条件输入窗口的函数指针
pinputWndAction:
在fltclass为1和2的情况下才有意义,表示响应模版行为的接口
f_initcallback:
4个重要的函数之一,在过滤器UI创建完后回调,做UI响应用;
f_decodeArgstr:
4个重要的函数之一,解析用户自定义的条件。
f_itemfilter:
4个重要的函数之一,如何过滤一注号码
f_itemcheck:
4个重要的函数之一,与f_itemfilter相似,不过这里是做号码过滤测试,并不是做过滤。
以上4个函数在下文再做说明。
(这里使用的开发环境为Delphi2007/WindowsXP)
A常规过滤插件的做法(以大尾个数为例说明)
1打开delphi选择File->
NewProject
从对话框中选择DLLWizard
2从project菜单选择AddtoProject
弹出文件对话框中选择plus\forplugins\delphi目录下ssqInterfaces.pas、ssqPublicDefine.pas
添加到project中
3编写插件入口函数
首先定义TssqPlgFilterIntfData结构体全局变量plugintf用于储存插件所有信息
var
plugintf:
TssqPlgFilterIntfData;
在入口插件中填充plugintf所有字段信息,最后返回plugintf地址给插件管理器
const
C_PLUGINNAME='
大尾个数'
;
C_PLUGINGUID='
C_PLUGINPUBKEY='
0123456789'
C_PLUGINPRVKEY='
C_PLUGINID='
2095890iuosdugo23498iof8979'
C_PLUGINVER='
1.0'
C_PLUGINAUTHOR='
me@mmmm'
begin
withplugintfdo
begin
=$03809663;
//识别码$03809663
StrMove(guid,C_PLUGINGUID,Sizeof(guid));
=C_PLUGINPUBKEY;
=C_PLUGINPRVKEY;
=C_PLUGINID;
//开发授权:
ha