-- 作者:denghui69986
-- 发布时间:2022/4/13 10:21:00
-- 求专家解答
 3、授权按钮的代码设置为:Dim kh As String = e.Form.Controls("TextBox1").Text Dim rq As String = Format(e.Form.Controls("DateTimePicker1").Value,"yyyy-MM-dd") Dim cs As String = e.Form.Controls("NumericComboBox1").Value Dim qd As String = " " \'5个半角空格,用于初始化保存实际启动次数的存储器空间. Dim pw1 As String = "46DFA0D7" Dim pw2 As String = "C292C1DB" kh = kh.PadRight(50," ").SubString(0,50) \'客户名称最多50个字符,不够50用空格补 cs = cs.PadRight(5," ").Substring(0,5) \'启动次数最多允许5位数,不够的用空格补 If UKey.Start() Then If UKey.WriteStr(0,kh,pw1,pw2) AndAlso UKey.WriteStr(50,rq,pw1,pw2) AndAlso UKey.WriteStr(60,cs,pw1,pw2) AndAlso UKey.WriteStr(65,qd,pw1,pw2) Messagebox.Show("授权成功!","提示", MessageBoxButtons.OK,MessageBoxIcon.Information) Else Messagebox.Show("写入授权信息失败!","提示", MessageBoxButtons.OK,MessageBoxIcon.Information) End If Else Messagebox.Show("请插上UKey!","提示", MessageBoxButtons.OK,MessageBoxIcon.Information) End If 你也许会奇怪,为什么客户名称和次数,都要固定长度,不够的补空格? 你想一下,如果你之前已经对某个UKey进行过授权,授权客户是“北京市公安局”,现在想重新授权,将客户改为“联想电脑”,如果不采用固定长度且补空格的方式,那么重新授权后,客户名称将是"联想电脑安局"。 5、现在回到原来的项目中,将项目事件BeforeOpenProject事件代码设置为: If UKey.Start() Then If UKey.Encrypt2("abc") <> "483DBF9FDD0574C0" Then MessageBox.Show("请插上XX公司提供的UKey!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) e.Cancel = True Else Dim khs As String = UKey.ReadStr(0,50) \'从存储器读取0到49这50个字节的内容,也就是授权客户名称 Dim rqs As String = UKey.ReadStr(50,10) \'从存储器读取50到59这10个字节的内容,也就是截止日期 Dim css As String = UKey.ReadStr(60,5) \'从存储器读取60到64这5个字节的内容,也就是允许启动次数 Dim yqs As String = UKey.ReadStr(65,5) \'从存储器读取65到69这5个字节的内容,也就是已经启动次数 Dim rq As Date Dim cs As Integer Dim qs As Integer \'从存储器读取出来值的是字符,所以还需要转换一下,因为截止日期是Date型,次数是Integer型 Date.TryParse(rqs,rq) Integer.TryParse(css,cs) Integer.TryParse(yqs,qs) qs = qs + 1 \'已经启动次数加1 UKey.WriteStr(65,qs,"46DFA0D7","C292C1DB") \'将已经启动次数写入存储器 If qs > cs \'如果已经启动次数大于允许启动次数 MessageBox.Show("你的UKey已经超过允许启动次数!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) e.Cancel = True ElseIf Date.Today > rq \'如果今天的日期大于截止日期 MessageBox.Show("你的UKey已经过期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) e.Cancel = True End If If e.Cancel = False Then MessageBox.Show("尊敬的用户" & khs.Trim() & ",欢迎使用本软件!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) End If End If Else MessageBox.Show("启动UKey失败!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) e.Cancel = True End If 上面的代码采用用户加密函数Encrypt2判断用户已经插上你公司提供的UKey,并判断此UKey是否还在授权范围之内,所有条件符合才允许打开你的项目。 7、最后增加一个计划,执行间隔为10000毫秒,也就是10秒,计划代码为: If UKey.Encrypt1("abc") <> "E5FC1B19625C5C4A" Then MessageBox.Show("请插上XX公司提供的UKey!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) DataTables.Save() Syscmd.Project.Exit End If
我复制按照以上代码设置,求专家指导,谢谢
|