资料收集工具(易语言2005年大赛三等奖)

资料收集工具(易语言2005年大赛三等奖)

“Glean资料收集工具”设计文档

参赛的几项说明:

*本程序使用 3.8 版编写。

*文件清单及位置:(12个文件,没有易编译后的exe程序和发布安装程序)

(工作目录下)

    设计文档.txt      本资料

    glean.e           资料收集工具主程序

    gettext.e         快速保存文字资料程序

    G_HELP.CHM        帮助文件

    getresource.dll   传递信息的 DLL 文件(源程序在本资料中)

    glean01.ico       IE 工具按钮的图标

    glean02.ico       IE 工具按钮的图标

    regvsr32.exe      系统注册程序(每台机器都应该有)

    data(子目录)

        zlk.edb             资料库

        zlk.edt             资料库

        glean简要说明.ewd   EWD文档的例子

        glean简要说明.rtf   RTF文档的例子

一、本次参加大奖赛的修改说明:

原来的程序主要是编辑HTML格式的资料,因此使用了微软的 dhtmled.ocx,由于本次大奖赛要求不能使用外部OCX控件,易语言没有这方面的支持库。为了适应大奖赛的要求,删除了 dhtmled.ocx 控件,改用办公组件。我认为这使软件的通用性变差。

二、程序的调用流程:

    程序有两种启动方式:1 直接启动主程序,实现资料的浏览、编辑功能。2 由 IE 浏览器启动,实现收集资料的功能。对于后者的启动流程分解如下:

1、由自定义的 IE 工具按钮、或者右键菜单,分别通过注册表启动 geturl.htm 和 gettext.htm 脚本程序。

2、脚本程序负责生成 IE 中的必要信息(网页地址、功能信息、程序的执行路径、网页名称。),然后启动 GetResource.dll ,并传递参数。

3、GetResource.dll 根据功能信息(按钮或右键)分别启动不同的 E 程序,完成收集资料的工作。

三、脚本程序。比较简单,可以直接查看程序安装目录下的文件。(首次运行主程序 glean 即可生成)

四、GetResource.dll

注:E 语言生成的 Dll 文件不能被 windows 注册,所以使用 VB 编写。

GetResource.dll 文件的作用是充当调用 E 程序的桥梁。它的功能有两个:

1、传递参数。

2、根据功能信息(INFO)调用不同的 E 程序。

它只有一个子程序,如下:

Public Sub geturl(URL As String, Info As String, sFilePath As String, sName As String)

    '入口参数: URL–网页的地址,INFO–“按钮”或“右键”,SFILEPATH–程序的执行路径,SNAME–网页的名称。

    Dim szlPath As String, sdirTemp As String

    Dim strInfo As String

    Dim sFlName As String

    Dim Errno As Variant

        

    sFilePath = Replace(sFilePath, "\\", "\")

    sFlName = Replace(sName, " ", "<@>")        'dos的参数是用空格分段的。

    If Info = "右键" Then

    '右键,直接保存。

        strInfo = sFilePath + "\gettext.exe " + URL + " " + sFilePath + " " + sFlName

    Else

    '按钮,调出资料编辑窗口

        strInfo = sFilePath + "\glean.exe " + URL + " " + sFilePath + " " + sFlName

    End If

    Errno = Shell(strInfo, 1)

End Sub

五、在 IE 浏览器上增加工具按钮和右键菜单的方法。

1、增加工具按钮

对于注册表的主键:HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Extensions 作如下操作:

(1)在Extensions中新建主键,主键的命名格式为“{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}”,如:{11111111-2222-3333-4444-555555555555},这里不能和其它主键名发生重复。

(2)在新建的主键中建立名为ButtonText的字符串,该字符串的作用是定义按钮上显示的文字。 

(3)建立名为Clsid的字符串,其值固定为{1FBA04EE-3024-11d2-8F1F-0000F87ABD16},它是IE工具条的类标识码。 

(4)建立名为Default Visible的字符串,赋值“Yes”,该字符串的作用是确定自定义的按钮在工具栏上是否显示,No为不显示。 

(5)建立名为HotIcon的字符串,其值为鼠标移到该按钮上时显示的图标文件名。

(6)建立名为Icon的字符串,其值为该按钮一般情况下显示的图标文件名。

(7)建立名为MenuText的字符串,它的作用是定义按钮在IE“工具”菜单中显示的文字。 

(8)建立名为MenuStatusBar的字符串,它的作用是定义鼠标移到IE“工具”菜单中的按钮时在状态栏上显示的文字。 

(9)建立名为Script的字符串,它的作用是定义此按钮执行的“HTML”文件的名称。

2、右键菜单

(1)在注册表HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt项下建立一个新项,项的名称既出现在菜单中的标题。

(2)将新建项的默认值设定为一个URL地址,当用户点击菜单项后,IE就会调用URL指向的页面中的脚本程序。

六、资料库的数据结构:

由于数据关系比较简单,同时没有保密安全等特特别的要求,所以选用 E 自带的 edb 数据库。

文件名:zlk.edb  (在程序工作目录下的 .data\ 子目录)

字段结构:

  1、z_id       文本型    长度=12     记录的唯一标识(见下面的说明)

  2、z_fid      文本型    长度=12     父记录标识(见下面的说明)

  3、z_type     文本型    长度=1      资料的类型(目录=D,ewd格式=E,rtf格式=R,txt格式=T)

  4、z_caption  文本型    长度=100    资料标题

  5、z_zl       字节集型  长度=       资料

  6、z_url      文本型    长度=100    资料来源的url

  7、z_imgdir   文本型    长度=100    资料中图形文件的保存目录(暂时不用)

  8、z_sy       整数型    长度=       树型框中使用的索引

id的详细说明:

为了分类组织资料,需要id具有分类功能。id号的例子“0101”。每两位一段,最大六段。也就是说,资料的层次(如章节)最多六层。编号的每一位采用如下序列:

“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”,两位编号的容量是1296-1。

资料所属的目录的id就是父id(z_fid),如果 z_fid = "00" ,说明它是根目录。

七、程序中的特别问题

1、源程序中不使用计次循环。

非正版“易”的计次循环虽然计次正确,但是计次变量不变,永远是 0 。所以程序中不能使用计次循环。

2、由于超文本浏览框没有提供“复制”功能,并且模拟键盘或发消息的方法也同样不可用(很多控件是可用的,但是超文本浏览框不行)。

另外关于控件是否有焦点方法、控件已经获得焦点的事件,在易语言中不是所有的控件都有效。超文本浏览框就是无效。所以也没有办法控制按钮、菜单的禁止功能。

所以当焦点在浏览器上,用户按了复制、剪切等菜单功能时无操作。实在没有别的办法。

资料收集工具(易语言2005年大赛三等奖)》有0个想法

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注