Foxtable(狐表)用户栏目专家坐堂 → 求助:根据实例中的注册系统演示,怎么将数据写入到注册表中呢?


  共有3964人关注过本帖树形打印复制链接

主题:求助:根据实例中的注册系统演示,怎么将数据写入到注册表中呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:根据实例中的注册系统演示,怎么将数据写入到注册表中呢?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/12/29 16:01:00 [只看该作者]

把SaveConfigValue 改为Registry.SetValue 即可

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/29 16:09:00 [只看该作者]

 楼主,你能进步一下么?

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Bin)把SaveConfigValue 改为Registry.SetVal...  发帖心情 Post By:2014/12/29 16:12:00 [只看该作者]

麻烦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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 楼主,你能进步一下么?  发帖心情 Post By:2014/12/29 16:13:00 [只看该作者]

有点甜老师 不好意思啊 这个之前一直没有操作成功 所以就在原地踏步了 恳请指导

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)Dim n As Integer = GetConfigValue(...  发帖心情 Post By:2014/12/29 16:59:00 [只看该作者]

有点甜老师 
项目开启后有一个自动升级判断
If Syscmd.Project.Update(False,False) = False Then '如果没有升级
     Forms("涉密信息主窗").open()
End If
上述注册代码 如何与之更好地配合呢?
也就是怎么读取该项目是否注册,如果升级后存在注册信息,不弹出注册框;如果升级后不存在注册信息,弹出注册框!
确定注册 注册成功后进入项目
反之取消注册 则关闭项目


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/29 17:01:00 [只看该作者]

 升级代码,可以写在afteropenproject的后面啊。

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜) 升级代码,可以写在afteropenp...  发帖心情 Post By:2014/12/29 17:06:00 [只看该作者]

放在末尾都没有用 有点甜老师
貌似确定按钮事件代码 不启用
主程序采用的是无边框窗体设计  
项目如下 麻烦有点甜老师看看    谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:涉密信息系统管理.rar



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/12/29 17:32:00 [只看该作者]

   
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:涉密信息系统管理.rar


 回到顶部
总数 11 1 2 下一页