以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:根据实例中的注册系统演示,怎么将数据写入到注册表中呢?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=62303)

--  作者:李孝春
--  发布时间:2014/12/29 15:47:00
--  求助:根据实例中的注册系统演示,怎么将数据写入到注册表中呢?

本示例可以参考CaseStudy目录下的文件“注册系统设计演示.table”。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:注册系统设计演示.table


假定你提供了一个项目给客户试用,希望前30次正常启动,30次后出现注册窗口,60次后如果没有注册,则拒绝进入。

设计步骤:

1、设计一个注册码输入窗口,窗口类型为模式,窗口名称为“注册”,窗口中的控件如下图:


2、将窗口的AfterLoad事件设为:

e.Form.Controls("TextBox1").Value = ComputerId
e.Form.Controls(
"TextBox2").Value = GetConfigValue("Register" & ComputerId, "")

因为可能有不同的电脑使用项目,所以用于保存注册码的设置名称必须包括机器码,以避免注册码被覆盖。

3、将窗口中“确定”按钮的代码设为:

SaveConfigValue("Register" & ComputerId, e.Form.Controls("TextBox2").Value)
e.Form.Close()

4、最后将项目的AfterOpenProject事件设为:

Dim n As Integer = GetConfigValue("Count",1)
Dim
Code As String = GetConfigValue("Register" & ComputerId,"")
Dim
Ok As Boolean
If
Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
    OK =
True
Else
    If
n > 30 Then
        Forms(
"注册").Open()
        Code = GetConfigValue(
"Register" & ComputerId,"")
        If
Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
            OK =
True
        End
If
    End
If
    If
n > 60 AndAlso Ok = False Then
        Messagebox.Show(
"您正在使用的产品已经超出试用次数!")
        Syscmd.Project.
Exit()
    End
If
End
If
n = n +
1
SaveConfigValue(
"Count",n)



求助:怎么吧注册表的代码写法加入到上面的代码中,实现项目更新后,注册依旧有效!

下面为注册表写入方法

Dim Count As Integer
Count = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",0)
Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",Count + 1)
Output.Show(Count)




[此贴子已经被作者于2014-12-29 15:47:37编辑过]

--  作者:Bin
--  发布时间:2014/12/29 16:01:00
--  
把SaveConfigValue 改为Registry.SetValue 即可
--  作者:有点甜
--  发布时间:2014/12/29 16:09:00
--  
 楼主,你能进步一下么?
--  作者:李孝春
--  发布时间:2014/12/29 16:12:00
--  回复:(Bin)把SaveConfigValue 改为Registry.SetVal...

麻烦BIN老师看看  下面红色部分变更对不对  谢谢

红色部分变更代码 明显不和谐 哎!


Dim n As Integer = GetConfigValue("Count",1)
Dim
 Code As String = GetConfigValue("Register" & ComputerId,"")
Dim
 Ok As Boolean 
If
 Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
    OK = 
True
Else
    If
 n > 30 Then
        Forms(
"注册").Open()
        Code = GetConfigValue(
"Register" & ComputerId,"")

更换为:Code = Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","n",0)

        If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
            OK = 
True
        End
 If
    End
 If
    If
 n > 60 AndAlso Ok = False Then
        Messagebox.Show(
"您正在使用的产品已经超出试用次数!")
        Syscmd.Project.
Exit()
    End
 If
End
 If
n = n + 
1
SaveConfigValue(
"Count",n)

更换为:

Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","n",n + 1)

[此贴子已经被作者于2014-12-29 16:14:42编辑过]

--  作者:李孝春
--  发布时间:2014/12/29 16:13:00
--  回复:(有点甜) 楼主,你能进步一下么?
有点甜老师 不好意思啊 这个之前一直没有操作成功 所以就在原地踏步了 恳请指导
--  作者:有点甜
--  发布时间:2014/12/29 16:39:00
--  

Dim n As Integer = GetConfigValue("Count",1)
Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Count",1)
Dim Code As String = GetConfigValue("Register" & ComputerId,"")
Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Register" & ComputerId,"")
Dim Ok As Boolean
If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
    OK = True
Else
    If n > 30 Then
        Forms("注册").Open()
        Code = GetConfigValue("Register" & ComputerId,"")
Registry.GetValue("HKEY_CURRENT_USER\\Software\\MyApp","Register" & ComputerId,"")
        If Code > "" AndAlso DecryptText(Code,"abc","abc") = ComputerId Then \'如果注册码正确
            OK = True
        End If
    End If
    If n > 60 AndAlso Ok = False Then
        Messagebox.Show("您正在使用的产品已经超出试用次数!")
        Syscmd.Project.Exit()
    End If
End If
Registry.SetValue("HKEY_CURRENT_USER\\Software\\MyApp","count",n + 1)

 

[此贴子已经被作者于2014-12-29 16:39:18编辑过]

--  作者:李孝春
--  发布时间:2014/12/29 16:59:00
--  回复:(有点甜)Dim n As Integer = GetConfigValue(...
有点甜老师 
项目开启后有一个自动升级判断
If Syscmd.Project.Update(False,False) = False Then \'如果没有升级
     Forms("涉密信息主窗").open()
End If
上述注册代码 如何与之更好地配合呢?
也就是怎么读取该项目是否注册,如果升级后存在注册信息,不弹出注册框;如果升级后不存在注册信息,弹出注册框!
确定注册 注册成功后进入项目
反之取消注册 则关闭项目


--  作者:有点甜
--  发布时间:2014/12/29 17:01:00
--  
 升级代码,可以写在afteropenproject的后面啊。
--  作者:李孝春
--  发布时间:2014/12/29 17:06:00
--  回复:(有点甜) 升级代码,可以写在afteropenp...
放在末尾都没有用 有点甜老师
貌似确定按钮事件代码 不启用
主程序采用的是无边框窗体设计  
项目如下 麻烦有点甜老师看看    谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:涉密信息系统管理.rar



--  作者:有点甜
--  发布时间:2014/12/29 17:32:00
--  
   
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:涉密信息系统管理.rar