Authorware实战开发专题(6-3)

  •   2009-07-09/15:34
  •   Authorware作品的加密保护(6-3)

    注册输入法


    现在的软件很多需要注册,没有注册,也就是没有输入正确的注册码,软件的使用期限或者功能将受到限制,而注册码的来源当然是软件开发商或者开发者,并且相当大部分是需要付费的,因此被广泛的采用于商业软件中。在Authorware也一样可以实现这个功能,赶快来学习并制作一个注册输入的范例吧。

    实例说明:

    1、 在这个实例里,用户必须输入合法授权的注册码,才能继续执行主程序,程序运行主界面如下图6.6所示。



    图6.6 注册输入程序运行界面

    当用户输入正确的注册码后,显示如下图6.7所示的正确信息,并进入主程序流程;



    图6.7 注册成功信息

    当用户输入错误的注册码则出现如下图6.8所示的错误信息。



    图6.8 注册失败信息

    2、主程序流程图如下图6.9所示。



    图6.9 注册输入法主程序流程图

    实例分析:

    1、注册信息输入交互流程的设计

    本实例设计需要输入三个相关的注册信息,包括注册姓名、注册组织及注册号码。如下图6.10是这三个分支的程序流程图。



    图6.10 注册信息输入交互三个分支程序流程图

    从程序流程图中可以看出这三个分支的设计是一样的,现在我们就来详细的分析“注册号码”分支的设计流程。

    首先拖入一个框架图标,命名为“Wrapper”,双击进入框架图标并删除默认的所有框架流程图标内容,然后建立如下图11所示的新框架流程。



    图6.11 Wrapper框架流程图

    在新建立的框架流程中,交互“切换输入”的主要作用是让用户可以随时切换到注册姓名和注册组织的信息输入框,其中热区“Tab”分支的计算图标里的内容为:PressKey("Ctrl1"),其热区属性设置如下图6.12所示,其快捷键设置为“Tab”键,同时还要设置其热区响应属性为“Perpetual”永久响应。



    图6.12 Tab热区响应属性

    同理“ShiftTab”热区分支也是如此设计,只是其快捷键改变为“Shift+Tab”而已,其计算图标内容为:PressKey("Ctrl2")。这里出现的"Ctrl1"、"Ctrl2"、"Ctrl3"分别是程序自定义的切换到三个相关信息输入文本框的快捷键,而函数PressKey("keyname")是系统函数,其作用相当与用户输入相关的keyname,例如PressKey("Ctrl1")执行的效果相当于用户同时按下“Ctrl”和“1”两个键盘键钮,也就是说不须用户输入,由函数程序直接执行“Ctrl+1”的快捷方式。

    在退出框架的时候执行的计算图标“获得输入注册码”是捕捉用户输入的注册码信息,并把注册码赋值给自定义变量Temp3,其计算图标里函数编写如下:

    Temp3 := EntryText@"Text Entry3"

    其中“Text Entry3”是图6.10中“注册号码输入”群组图标里的交互分支,如下图6.13所示:



    图6.13 “注册号码输入”群组图标程序流程图

    在注册信息输入交互流程的设计中我们自定义了三个变量Temp1、Temp2、Temp3分别用来表示用户输入的注册姓名、注册组织和注册号码。如图6.13所示的群组图标“注册号码输入”的流程图,首先拖入一个计算图标,命名为“PresetEntry := Temp3”,计算图标输入以下内容:

    PresetEntry := Temp3

    PressKey("RightArrow")


    “PresetEntry”是一个系统变量,将一个字符串的值(例如Tmep3)赋给该变量,当执行下一个正文输入响应时,该字符串会自动显示在正文输入响应的正文输入框中,最终用户可以编辑该字符串,然后作为用户正文输入响应的输入。如图6.13中交互图标“Text Entry3”右边的按键交互分支,发现什么了,对,我们将允许用户对Temp3字符串,即用户输入的注册码进行编辑,包括剪切(Ctrl+X)、拷贝(Ctrl+C)、粘贴(Ctrl+V)等操作,这样用户就可以更方便用户输入或者修改注册码的输入,具体实现函数代码如下所示:

    剪切(Ctrl+X):TextCut()

    拷贝(Ctrl+C):TextCopy()

    粘贴(Ctrl+V):TextPaste()

    把上述三个系统函数分别写入图6.13中的“CtrlX”、“CtrlC”和“CtrlV”三个计算图标里,并分别设置各自的按键交互属性的快捷键“Key(s)”为“CtrlX”、“CtrlC”和“CtrlV”,分支响应返回类型设置为“Continue”,这样就可实现对用户已输入文本的编辑操作。

    在图6.13的交互流程还有一个“*”分支,它是接受用户的新输入,响应类型设置为文本输入响应“Text Entry”,返回类型设置为“Try Again”,其计算图标里无须写代码,但是为了正常运行,我们输入了“--”注释标志符号作为它的内容,否则运行的时候总会提示错误信息。

    最后,图6.9中的“注册号码”分支就设计制作完毕,同理我们可以制作“注册姓名”和“注册组织”两个分支,比较简单的方式是拷贝“注册号码”分支后进行相应的修改即可,这样注册信息输入交互流程的设计就大功告成,下面我们开始设计程序主流程。
    2、程序主流程的设计与实现

    1)初始化光标位置

    我们返回到图6.9的主程序流程中,首先拖入一个计算图标“初始光标位置”,写入如下代码:


    PressKey("Ctrl1") --程序开始自动切换到“注册姓名”文本输入框

    login:=0 --初始化自定义变量,作为永久交互的条件


    2)设计注册程序背景

    接着设计交互图标里的背景,双击交互图标“注册”进入背景编辑画面,导入需要的注册背景图,然后在三个文本输入框的相应位置分别写入文本{Temp1}、{Temp2}
    和{Temp3},如下图6.14所示:



    图6.14 输入动态文本{Temp1}

    为了使{Temp1}、{Temp2}和{Temp3}文本根据用户的输入而动态改变,还必须选中其图标的显示属性的“Update Displayed Variables”选项,如图6.15所示。



    图6.15 设置变量的Update显示属性

    3)设计注册输入程序交互流程

    首先根据前面的介绍把“注册姓名”、“注册组织”和“注册号码”三个模块剪贴到交互的右边,并设置为热区交互,热区的位置和大小与三个信息的文本输入框对应,热区的返回类型设置为“Try Again”,热区的响应属性设置如图6.16一致,同时分别设置热区的快捷间Key为“CtrlX”、“CtrlC”和“CtrlV”,并选择为永久交互“Perpetual”,“Active If“条件为“login=0”。



    图6.16 注册姓名分支热区响应设置

    4)设计注册验证及其它程序流程

    从图6.6的执行效果可以看到我们还设计了三个交互按钮操作“确定”、“重填”、“取消”,其中“确定”分支的二级子流程如下图6.17所示,其作用是判断注册码的正确性,并执行相应的子程序,即输入正确注册码则继续执行主程序,错误则退出程序。图6.17中计算图标“判断注册信息”的内容为(默认正确注册码为8888-8888-8888):


    Reg:=Replace("-","8",Temp3) --替换”-“为”8”

    if Reg="88888888888888" then --注册码判断

    login:=1 --停止永久交互

    EraseAll() --擦除过时画面

    GoTo(IconID@"成功") --执行成功子程序

    else

    GoTo(IconID@"失败") --执行失败子程序

    end if




    图6.17 验证注册码流程图

    这样一个完整的注册码验证程序就完成了,你可以把他作为一个通用模块应用于自己的Authorware作品中。
    本实例中的密码算法比较简单,只是根据用户输入的注册码文本格式化为数字文本后进行判断,在实际应用中,需要的复杂程度就由你自己发挥拉!可能你还会有个疑问,如何判断用户是否为已注册用户呢?因为Authorware打包文件本身是不具备数据交换功能的,其实你可以在Authorware作品程序里把用户成功注册的信息写入一个文本文件,例如sn.txt,然后把sn.txt保存为sn.dll并存放于用户系统根目录下,这样就神不知鬼不觉咯。
    但是需要添加一个功能模块,每次执行程序前先判断sn.dll里面的注册信息是否正确,具体的实现函数这里就不描述了,可以查看Authorware系统函数的相关文件(File)控制函数。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多