给你的应用程序加把锁 全面封装VFP程序
[日期:2007-06-10] 来源: 作者: [字体:大 中 小]
你的应用系统开发完成后,为了检测系统的质量,往往要给一些用户一个试用版,在系统中设置一个试用期,试用期结束后就提示用户注册,同时应用系统也不再运行,这样就能充分保证你的成果不被侵犯、保证开发质量,同时又有助于销售的一种有效手段。注册表功能的使用,可有效地保障这一切。
在我们大量使用的 Windows 9598、NT或更高版本的Windows操作系统中,注册表是保存系统的软硬件配置信息和用户信息的数据库。注册表中的数据决定了它就是Windows操作系统的最核心部件,应用程序都选择在注册表中保存其配置参数。我们当然也可以利用注册表的特性来为应用程序加上使用期限,以保障软件作者的利益。
以下仅以Visual foxpro的应用
程序为例,介绍此类方法。在本例中,我们为这个应用程序添加一个直到2000年10月25日前都可以运行的条件,过了这个日期后,该软件将自动结束并提示用户注册。
我们需要先编写一
注册表文本文件(.reg)。
在注册表文本文件的首行必须用命令字符串“REGEDIT,它的作用是告诉
系统调用regedit来完成注册信息的合并
工作。接下来的每一行或者代表一个键值的声明,或者是注释性的说明信息。
主键及其默认键值的声明格式的规则是:
根键一级主键二级主键......=默认键值
根据此规则,我们编写了注册表文本文件regdemo.reg,内容为:
REGEDIT4
[HKEY-CURRENT-USERSoftwareljiSoftwarelji]
″enddate″=″20001025″
运行这个.reg文件,enddate的信息即可注册到注册表主键“HKEY-CURRENT-USERSoftwareljiSoftwarelji”中。
然后要为你的应用
软件编写一个入口程序,具体内容是:
Clear ALL
CLOSE data
-SCREEN.windowstate=2
SET CENTURY ON
SET DATE TO YMD
---------------
#DEFINE HKEY-CLASSES-ROOT
-2147483648
#DEFINE HKEY-CURRENT-USER
-2147483647
#DEFINE HKEY-LOCAL-MACHINE
-2147483646
#DEFINE HKEY-USERS
-2147483645
#DEFINE ERROR-SUCCESS
0
---------------
IF !register()
RETURN .t.
ENDIF
---------------
FUNCTION register
enddate=‘‘
SET proc to registry
---------------
frmMyForm = CREATEOBJECT(″registry″)
frmMyForm.init()
enddate=‘‘
frmMyForm.GetRegKey(″enddate″,@enddate,″SoftwareljiSoftwarelji″,HKEY-CURRENT-USER)
IF enddate=‘‘
=messsagebox(‘系统还没有注册‘,64,‘系统提示‘)
ELSE
=messsagebox‘系统使用期限为‘+enddate,64,‘系统提示‘)
ENDIF
SET proc to
IF enddate=‘‘
MESSAGEBOX(‘您还没有取得系统使用权!‘+chr(13)+‘请与软件作者联系‘,0+16,‘提示‘)
RETURN .f.
ELSE
IF date()ctod(enddate)
MESSAGEBOX(‘系统使用期限已到!‘+chr(13)+‘请
与软件作者联系‘,0+16,‘提示‘)
RETURN .f.
ELSE
RETURN .t.
ENDIF
ENDIF
需要注意的是:这里的registry是一个自定义类库对象,限于篇幅,不在此列出其代码,大家如果感兴趣,可以在Visual FoxPro的安装目录下的SAMPLECLASSES子目录中找到一个名为registry.prg的示例程序。