作者:ec 更新日期:2002-12-20 浏览人次:91
问题:
如何写注册表限次?
如何通过写注册表限制数据库使用时间?比如到某年某月某日过期。
回答:
在模块中加入如下代码,然后再启动时用名字为Autoexec的宏启动
'其实本例非常简单,你只要弄懂 SaveSetting和GetSetting即可
'本例会修改注册表。
Option Compare Database
Option Explicit
Dim HowMany As String
Dim addTimes As Integer
Sub Times()
'初始注册表,在注册表写入键值
SaveSetting "HerdsboyTimeLimit", "Settings", "Times", "1"
'把这句改为写入时间,以后通过datediff比对now
'与第一次写入的时间就可以达到限制时间的目的
MsgBox "欢迎第1次程序使用本程序!", , "通用限次程序"
End Sub
Sub Changetimes()
'把字符值强制转为整形值
HowMany = Cint(GetSetting("HerdsboyTimeLimit", "Settings", "Times"))
HowMany = HowMany + 1 '增加次数
addTimes = CStr(HowMany) '把次数重新转为字符串
'重写注册表值
SaveSetting "HerdsboyTimeLimit", "Settings", "Times", addTimes
End Sub
Function Gettimes()
On Error Resume Next
'加载,获得使用次数
HowMany = Cint(GetSetting("HerdsboyTimeLimit", "Settings", "Times"))
If HowMany = "" Then
Call Times '如果注册表没有该键值,加载写入注册表过程
ElseIf HowMany <= 100 Then
'判断使用次数,小于100继续使用
MsgBox "你使用了" & HowMany & "次本程序!", , "通用限次程序"
Call Changetimes '改变使用次数
DoCmd.OpenForm "form"
Exit Function
Else
MsgBox "你第" & HowMany & "次使用了本程序,超过使用次数!", , "通用限次程序"
'判断使用次数,大于100警告并停止使用
DoCmd.Quit
End If
End Function
例2
'限制软件30天试用
Dim ReValue As Date '声明时间变量
Dim name As String '声明字符串变量,软件名称
Dim dd As Variant '声明数值变量,dd为日期差
name = "gggg" '给变量赋值软件名为gggg
ReValue = GetSetting(name, "MainKey", "DateValue", Date) '读取注册表软件名gggg的键值,如果没有则为当前日期
Me.Text1 = ReValue
dd = DateDiff("d", ReValue, Date) '计算日期差
Me.Text2 = dd
If dd = 0 Then '如果是第一天运行
SaveSetting name, "MainKey", "dateValue", Date '写注册表
End If
If dd > 30 Then
MsgBox "软件已过期"
Else
MsgBox "软件可以试用"
'DoCmd Quit
MsgBox "还剩下" & 30 - dd & "天试用期!"
End If