

作者: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