以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 软件注册还是不懂! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=150595) |
-- 作者:禾成 -- 发布时间:2020/6/2 20:08:00 -- 软件注册还是不懂! 这段代码按理来说应该是正确的, 但就是达不到效果: 如果注册码正确执行完绿色的代码是不是应该停止了?不再执行后面 If n > 30 Then判断了 另外我注册表项改成了cncgl,有影响吗? 请老师指点一下 Dim n As Integer = Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Count",0) Dim Code As String =Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskID,"") Registry.SetValue("HKEY_CURRENT_USER\\Software\\cncgl","Count", n+1) Dim Ok As Boolean If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True 这里是不是应该加个停止执行的代码?加Return 不起作用,应该怎么写? Else If n > 30 Then Forms("注册").Open() Code = Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskID,"") If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True End If End If Return 加上这个代码后面的不再执行了 If n > 60 AndAlso Ok = False Then Messagebox.Show("您正在使用的产品已经超出试用次数!") Syscmd.Project.Exit() End If End If [此贴子已经被作者于2020/6/2 20:26:50编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/6/2 20:41:00 -- 不需要加什么return,完全多余,if语句的说明好好看看:http://www.foxtable.com/webhelp/topics/0223.htm Dim n As Integer = Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Count",0) Dim Code As String =Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskID,"") Registry.SetValue("HKEY_CURRENT_USER\\Software\\cncgl","Count", n+1) Dim Ok As Boolean If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True Else If n > 30 Then Forms("注册").Open() Code = Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskID,"") If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True End If End If If n > 60 AndAlso Ok = False Then Messagebox.Show("您正在使用的产品已经超出试用次数!") Syscmd.Project.Exit() End If End If |
-- 作者:禾成 -- 发布时间:2020/6/3 9:26:00 -- 下面这个条件是满足了的,已经输入正确的注册码 If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True 我的注册码提交代码是这样的 If e.Form.Controls("textbox2").Text = EncryptText(e.Form.Controls("textbox1").Text, "abc", "abc") Then \'判断注册码是否正确 Registry.SetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskId, e.Form.Controls("textbox2").Value) \'如果正确则写入注册表 MessageBox.show("注册成功,感谢您的使用!") e.Form.Close() Else MessageBox.show("无效的注册码,请重新输入") End If 为什么还会执行下面的 else If n > 30 Then Forms("注册").Open() 请老师解惑! 你让我看的教程我也看了 这是双分支形式里包含单分支 还有就是声明了一个逻辑变量“OK”感觉这个好像没什么用
|
-- 作者:有点蓝 -- 发布时间:2020/6/3 9:45:00 -- 第一个OK赋值确实没有什么用。但是不影响整体逻辑的处理。 如果是第一个if符合条件,不可能会执行else里面的代码的。既然能够进入注册窗口,说明第一个if条件肯定不成立
|
-- 作者:禾成 -- 发布时间:2020/6/3 10:03:00 -- 上面注册码写入的是红色这个值 SetValue(keyName ,valueName ,value) 下面判断注册码是否正确判断的是蓝色这个值 SetValue(keyName ,valueName ,value) 是这里的问题吗? 这写入的是注册码,判断的是硬盘序号,我总觉得不对 ?????
If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True |
-- 作者:有点蓝 -- 发布时间:2020/6/3 10:36:00 -- valueName 是键,GetValue通过这个键取得的也是value的值,不会有问题 自己调试一下 注册码提交代码是这样的 msgbox(e.Form.Controls("textbox1").Text) msgbox(EncryptText(e.Form.Controls("textbox1").Text, "abc", "abc")) If e.Form.Controls("textbox2").Text = EncryptText(e.Form.Controls("textbox1").Text, "abc", "abc") Then \'判断注册码是否正确 msgbox(e.Form.Controls("textbox2").Text) Registry.SetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskId, e.Form.Controls("textbox2").Text) \'如果正确则写入注册表 MessageBox.show("注册成功,感谢您的使用!") e.Form.Close() Else MessageBox.show("无效的注册码,请重新输入") End If …… If n > 30 Then Forms("注册").Open() Code = Registry.GetValue("HKEY_CURRENT_USER\\Software\\cncgl","Register" & HardDiskID,"") msgbox(Code) msgbox(HardDiskID ) If Code > "" AndAlso DecryptText(Code,"abc","abc") = HardDiskID Then \'如果注册码正确 OK = True End If End If If n > 60 AndAlso Ok = False Then Messagebox.Show("您正在使用的产品已经超出试用次数!") Syscmd.Project.Exit() End If …… |
-- 作者:禾成 -- 发布时间:2020/6/3 12:46:00 -- e.Form.Controls("textbox2").Text 搞了那么久原来问题出在这里, 谢谢有点蓝老师 感谢学习路上有你
|