现在,许多软件都加入了共享大军,而我们不少教师辛勤制作的教学课件至今仍是免费家族中的一员,大家都可免费使用。因此,我一直在寻求一种保护广大教师利益的方法,由此便想:能否用手边的Authorware为制作的课件设计一个软件注册程序,用于保护我们教师的“知识产权”呢?(是不是觉得太严肃了。^-^)。在经过一段时间的思考和实践并分析参考了其他共享软件的注册方法后,终于设计出了一个还算像样的软件注册程序(见图1),它可是能输入英文注册信息的哦。好东东不敢独享,现将其制作过程叙述如下,希望对诸位有所启迪和帮助。(注:所有的流程见图2)
图1
图2
1、首先创建一个名为“注册.a5p”的文件,打开后先去掉标题栏和菜单栏,然后引入一个计算图标,命名为“判断”。
打开“判断”计算图标,输入如下内容:
ResizeWindow(306, 226)--初始化窗口
g_ma:=ReadExtFile(FileLocation^"\hwnum.txt")--读取机器码文件信息并存入变量g_ma
if g_ma>0 then
path:=1
else
path:=2--根据注册码值进行判断,选择分支流程
end if
这样,当用户每次执行程序时,都会由第一个计算图标来判断本软件是否存在机器码,然后再通过决策分支路径来决定程序的走向(机器码产生后不会改变,除非机器码信息文件不存在。)。
2、拖动一个决策图标到“判断”计算图标下,双击打开决策属性设置对话框进行如下设置:“重复”一项设置为“不重复 ”、“分支 ”一项设置为“计算分支结构”,下面输入变量“path”,用于控制流程走向。具体说来就是:如果此程序存在机器码,则执行“path:=1”所对应的第一条分支,否则,执行“path:=2”所指定的第二分支生成一个机器码和对应的注册码文件。
3、在决策图标右侧放置两个群组图标,分别命名为“存在”、“不存在”。
打开“不存在”群组图标,在第二级流程线上拖放两个计算图标,分别命名为“生成信息文件”、“跳转到判断”。其中,“生成信息文件”计算图标中的内容如下:
snword1:="h w t h e q u w c"--原始密码信息,记得一定要用空格隔开,否则Authorware会将其看作是一个字符串
snword2:="k b r o 9 n f o x"
snword3:="j u m p e d 0 v z"
snword4:="r 3 g i 1 a 7 y d"
snnumber:="0 1 2 3 4 5 6 7 8 9"
m:=Random(1,9,1)--随机取数,并赋值给自定义变量,用于生成机器码和对应的注册码文件。
n:=Random(1,9,1)
o:=Random(1,9,1)
p:=Random(1,9,1)
q:=Random(1,10,3)
r:=Random(2,10,1)
s:=Random(3,10,2)
t:=Random(4,10,1)
sn1:=GetWord(m, snword1)--在对应字串中取得字符并赋值给自定义变量
sn3:=GetWord(n, snword2)
sn4:=GetWord(o, snword3)
sn7:=GetWord(p, snword4)
sn2:=GetNumber(q, snnumber)
sn5:=GetNumber(t, snnumber)
sn6:=GetNumber(s, snnumber)
sn8:=GetNumber(r, snnumber)
WriteExtFile(FileLocation^"\\hwnum.txt", m^n^o^p^q)--机器码信息
WriteExtFile(FileLocation^"\\hwsb.txt", r^s^t)--识别码信息
WriteExtFile(FileLocation^"\\hwreg.txt", sn1^sn2^sn3^sn4^sn5^sn6^sn7^sn8)--注册信息(软件序列号)#p#分页标题#e#
(注意:这儿的文件路径可以任意改变,文件名也可以改变,如可以改成扩展名为OCX或DLL的文件,这样更安全。在这儿之所以存为TXT文本,只是为了方便大家进行验证。还要注意的是,原始密码信息中的字符记得一定要用空格空开,否则Authorware会将其作为一个字串对待,切记莫忘!)
跳转图标中只需加一句goto语句即可。
4、双击“存在”群组图标。在打开的“存在”群组图标中拖放一个计算图标,将其命名为“读取注册信息”,在其中输入:
sntext:=ReadExtFile(FileLocation^"\hwreg.txt")--读取原始注册码信息并赋值给变量sntext
hwreg:=ReadExtFile(FileLocation^"\hwreg.ocx")--读取用户注册码输入信息并赋值给变量hwreg
if sntext=hwreg then --判断确定流程走向
path1:=1
else
path1:=2
end if
5、在“读取注册信息”计算图标下放置一个决策图标,属性设置同第2步,只是将变量path换为path1即可。
在决策图标右侧放置两个群组图标,将它们分别命名为“已注册”和“未注册”,其中“已注册”为空群组,不需设定。
6、打开“未注册”群组图标,在其第三级流程线上放置三个显示图标并分别命名为“显示机器码”、“注册声明”和“按钮”。打开“显示机器码”显示图标,在其中适当位置输入“本机的机器码为:{g_ma} 识别码为:{sb_ma}”(不包括双引号,大括号要在英文状态下输入。)和相关信息。
(友情提醒:点击“文本”→“定义风格(D)…”或按“Ctrl”+“Shift”+“Y”快捷键,在打开的定义风格对话框中新建一风格,并将数字格式对话框中的“显示数千\u25968数百万隔离”复选框前的勾去掉,以防在千分位显示逗号),至于“注册声明”图标中的内容,各位可以自由发挥。而“按钮”显示图标中的内容是图1中的三个按钮文本信息,在下面用热区交互响应。
选中“显示机器码”显示图标,按“ctrl+=”快捷键,在随后弹出的计算图标中输入以下内容:
sntext:=ReadExtFile(FileLocation^"\hwreg.txt")--读取原始注册信息
l:=ReadExtFile(FileLocation^"\trynum.txt")--读取试用次数信息并赋值给L
if l<10 then--加这一语句主要是为了获得用户使用次数,使程序更真实、贴近实际。为此,我可是费了一番周折的哟。
x_path:=1
else
x_path:=2
end if
7、在下面加入一个决策图标,设置同上,只是将变量改为x_path即可。在其右侧分别放置一个“画线”计算图标和一个空群组图标,在计算图标中输入以下内容:
SetFrame(1,16711680)--设置线的颜色
if l<0 then l:=0--当l<0时,l值始终为0
Line(14,30,213,11+(10-l)*19,213)--画线,线的位置看情况而定。
在决策图标下再放置一个显示图标,在其中输入:剩余{l}次使用机会,用于显示剩余次数。
8、在“剩余次数”显示图标下放置一个“注册码输入”交互图标,将其属性设置为“更新变量”和“最优显示”,其余默认。打开“注册码输入”交互图标,再要显示用户注册码输入信息的地方输入:{snDisplayed},也就是图1中的输入注册码方框处。
交互图标右边的第一按鍵响应图标“Backspace”属性设置如下:激活条件为CharCount(snDisplayed)>0,擦除为“在下一次输入之后”。
其计算图标输入的内容如下:
snEntry:=SubStr(snEntry,1,CharCount(snEntry)-1)
snDisplayed:=SubStr(snDisplayed,1,CharCount(snDisplayed)
9、交互图标右边的第一按鍵响应图标“?”属性设置如下:激活条件为CharCount(snDisplayed)<9(用于控制用户输入的最大字符数),擦除为“在下一次输入之后”。#p#分页标题#e#
其计算图标输入的内容如下:
snEntry:=snEntry^Key--自定义变量snEntry用于存放用户输入信息
snDisplayed:=snDisplayed^"*"--“*”为密码显示字符
10、“注册”热区交互属性设置为:永久交互、激活条件为ok<>1、退出交互。
其计算图标中的内容为:
if snEntry=sntext then--判断注册码信息与用户输入信息是否相同,以此来决定流程走向。
path2:=1
ok:=1
else
path2:=2
end if
11、“试用”热区交互属性设置为:永久交互、激活条件为l>0。对应计算图标中的内容为:
EraseAll()
Goto(IconID@"主程序")
(在“试用”交互属性中将激活条件设为:l>0,这样就可以在用户使用10次后不响应“试用”交互,必须输入正确的注册码后才可继续使用,这样就可达到限制试用次数的功能。)
“再说吧”热区交互下的计算图标中的内容为:
Quit()
12、在交互图标下放置一决策图标,并在决策图标右侧加入“真确”和“错误”两个群组图标。决策属性设置同上,只将变量改为path2即可。
在“真确”群组图标中放置一个“写入注册文件”计算图标,双击打开后输入:
WriteExtFile(FileLocation^"\hwreg.ocx",sntext)--用户输入信息存入文档保存
“错误”群组图标中放置一个显示图标用于错误提示,再加一个等待图标限时2秒,最后再添一个计算图标用goto语句跳转到“注册码输入”交互图标即可。
最后记得,在第一级流程上放置一“主程序”群组用于放课件内容,再在“主程序”群组上附着一个计算图标(按ctrl+=快捷键),在其中输入:
l:=l-1
WriteExtFile(FileLocation^"\trynum.txt",l)
用于记录用户试用次数。
至此,整个注册程序设计完成了,最终流程图见图2。怎么样,没有用到一个外部函数就做出了不错的注册程序,Authorware没有我们想象的那么菜吧?如果加以适当修改,效果会更眩。不过,在此给出这个源程序并不是让大家就真的去收费,只是向大家展示一下另类的课件制作方法,以此说明我们的Authorware不只是一个简单的多媒体制作软件,同时也从一个侧面展示了函数的魅力。只要你敢与幻想、勇于尝试,你会有更好的更有价值的创意。为了我们课件的明天,大家一起努力吧!
评论 {{userinfo.comments}}
{{child.content}}
{{question.question}}
提交