神烦论坛

 找回密码
 立即注册
查看: 1767|回复: 0

网络验证系统 - 按键 COM插件接入示例

[复制链接]

91

主题

196

帖子

2025

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2025
发表于 2016-6-27 16:25:04 | 显示全部楼层 |阅读模式
按键 COM插件接入示例

按键 COM插件接入 <网络验证系统> 步骤
接入前准备:拷贝下面代码到自己的项目里

  1. ////////////////////////////////功能封装区域//////////////////////////////
  2. dim 全局_百宝云token
  3. dim 全局_项目名称
  4. dim 全局_是否初始化

  5. DimEnv 全局_用户名
  6. dim 全局_密码
  7. Dim 全局_版本号
  8. dim 引号



  9. Function 获取最后错误信息()
  10.         错误信息
  11.         call 全局_插件对象.GetLastErrorInfo(错误信息)
  12.         获取最后错误信息 = 错误信息
  13. End Function


  14. Function 初始化(token, 项目名)
  15.         全局_版本号 = "1.0.0.0"
  16.         Set 全局_插件对象 = CreateObject("qsx.user")
  17.         result  = 全局_插件对象.InitDll(token, 项目名)
  18.         If result = 0 Then
  19.                 初始化 = False
  20.         Else
  21.                 初始化 = True
  22.         End If
  23.         TracePrint "全局_百宝云token " & 全局_百宝云token
  24.         TracePrint "全局_项目名称 " & 全局_项目名称
  25. End Function


  26. Function 账号登陆(用户名,密码)
  27.         If 全局_插件对象.SignOn(用户名, 密码) = 1 Then
  28.                 账号登陆 = True
  29.         Else
  30.                 账号登陆 = False
  31.         End If
  32. End Function

  33. Function 账号登陆自动验证(用户名,密码)
  34.         If 全局_插件对象.SignOnAuto(用户名, 密码) = 1 Then
  35.                 账号登陆自动验证 = True
  36.         Else
  37.                 账号登陆自动验证 = False
  38.         End If
  39.         
  40. End Function


  41. Function 获取账号时间()
  42.         获取账号时间 = 全局_插件对象.GetUserTime()
  43.    
  44. End Function

  45. Function 获取项目公告()
  46.         result
  47.     ret = 全局_插件对象.GetPlacard(result)
  48.     if(ret = 1) Then
  49.             获取项目公告 = result
  50.     Else
  51.             获取项目公告 = ""
  52.     End if
  53. End Function

  54. Function 获取自定义数据(键)
  55.         result
  56.     ret = 全局_插件对象.GetCustom(键,result)
  57.     if(ret = 1) Then
  58.             获取自定义数据 = result
  59.     Else
  60.             获取自定义数据 = ""
  61.     End if
  62. End Function

  63. Function 发送监控消息(规则名称, 消息)
  64.     ret = 全局_插件对象.SendMonitorMsg(规则名称, 消息)
  65.     if(ret = 1) Then
  66.             发送监控消息 = True
  67.     Else
  68.             发送监控消息 = False
  69.     End if
  70. End Function

  71. Function 账号解绑(账号)
  72.     ret = 全局_插件对象.Ubind(账号)
  73.     if(ret = 1) Then
  74.             账号解绑 = True
  75.     Else
  76.             账号解绑 = False
  77.     End if
  78. End Function

  79. Function 账号注册(账号,密码,备注)
  80.     ret = 全局_插件对象.SignUp(账号,密码,备注)
  81.     if(ret = 1) Then
  82.             账号注册 = True
  83.     Else
  84.             账号注册 = False
  85.     End if
  86. End Function

  87. Function 账号充值(账号,充值卡)
  88.     ret = 全局_插件对象.Charge(账号,充值卡)
  89.     if(ret = 1) Then
  90.             账号充值 = True
  91.     Else
  92.             账号充值 = False
  93.     End if
  94. End Function

  95. Function 账号修改密码(账号,密码,新密码)
  96.     ret = 全局_插件对象.ChangePwd(账号,密码,新密码)
  97.     if(ret = 1) Then
  98.             账号修改密码 = True
  99.     Else
  100.             账号修改密码 = False
  101.     End if
  102. End Function

  103. Function 账号退出()
  104.     ret = 全局_插件对象.SignOut()
  105.     if(ret = 1) Then
  106.             账号退出 = True
  107.     Else
  108.             账号退出 = False
  109.     End if
  110. End Function

  111. Function 获取机器码()
  112.     获取机器码 = 全局_插件对象.GetMachinecode()
  113. End Function

  114. Function 文件更新(版本号)
  115.     全局_插件对象.UpdateFile(版本号)
  116. End Function


  117. Function GetMachineCode()
  118.     GetMachineCode = ""
  119.     Dim mc,mo
  120.     Set mc = GetObject("Winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration")
  121.     For Each mo In mc
  122.         If mo.IPEnabled = True Then
  123.             'TracePrint "本机网卡MAC地址是: " & mo.MacAddress
  124.             GetMachineCode = Plugin.Encrypt.Md5String( mo.MacAddress)
  125.             Exit For
  126.         End If
  127.     Next
  128.     Set mc = nothing
  129. End Function

  130. Function ParseJson(str,element)
  131.     Dim sc
  132.     Set sc = CreateObject("MSScriptControl.ScriptControl")
  133.     sc.Language = "JScript"
  134.     sc.AddCode "var o = " & str & ";"
  135.     ParseJson = sc.Eval("o." & element)
  136.     Set sc = nothing
  137. End Function

  138. // 自动更新 用于关闭自身的,使用的是win32里的一些API。 实现原理有兴趣的自行百度,其他的直接使用即可
  139. Public Declare Function GetParent Lib "user32" Alias "GetParent" (ByVal hwnd As Long) As Long
  140. Public Declare Function GetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long
  141. Public Declare Sub rtcDoEvents Lib "msvbvm60.dll" Alias "rtcDoEvents" () As Long
  142. Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  143. Public Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long

  144. Function selfExit()
  145.     TracePrint "------------------退出------------------"
  146.     //call TerminateProcess(-1, 259)
  147.     Hwnd = Form1.Hwnd
  148.     Do
  149.         hwnd = GetParent(hwnd)
  150.         If hwnd = GetDesktopWindow() or hwnd=0 Then
  151.                 hwnd = oldhwnd
  152.                 Exit Do
  153.         Else
  154.             oldhwnd=hwnd
  155.         End If
  156.         rtcDoEvents
  157.     Loop
  158.     Form1.登陆界面.Caption = hwnd
  159.     Call Plugin.Window.CloseEx(Hwnd)
  160.    
  161. End Function
复制代码

1、插件的注册与对象创建

  1. PutAttachment "c:","WebWLYZ.dll"
  2. Set Ws = CreateObject("WScript.Shell")
  3. Ws.run "cmd /c regsvr32 c:\WebWLYZ.dll", 0
  4. Set Ws = Nothing
复制代码

2、 初始化


初始化客户端数据的时候 ,我们需要调用的是 InitDll 函数 , 传入 <网络验证系统> 云应用token 与 项目名称 , 此函数必须在软件启动的时候 , 第一时间调用 , 如果初始化失败 , 所有与服务器通讯的函数全部不能使用

1.png

云应用token : 示例代码的客户端压缩包的 access.token 文件中


项目名称 : 我们可以 网络验证系统后台查询到
8.png

3、检测客户端是否有更新

当我们客户端初始化成功以后 , 需要检查文件是否有更新 , 我们需要调用 UpdateFile 函数 , COM插件会自动检查文件是否有更新 , 如果有更新则会自动启动文件更新器(某些杀软可能会报毒,请添加软件到白名单)


文件版本: 在日常开发中,每个软件都应该有一个属于自己的版本号 , 在 <网络验证系统> 中 , 文件版本号是有固定格式的 :1.0.0.0 , 同时我们也可以在 <网络验证系统>后台查看当前项目的最新的文件版本

4.png

4、 账号登录验证


推荐大家使用:账号登陆自动验证 SignOnAuto 接口,此接口在登录验证成功之后,内部会自动开启心跳线程,处理账号到期、停用等问题。这样使用者就不需要去关心心跳验证的问题了。

5.png

6.png



如果大家调用的是:注册码登陆 SignOn 函数,那么心跳就需要自己去完成了。这个心跳,其实就是自己开一个线程,每隔一段时间调用一次:获取账号剩余时间 GetUserTime 函数,来验证软件的使用权限。

7.png


心跳验证
9.png


以上4步,即可实现软件的登录与验证操作了。
这样我们就完成了 <网络验证系统> 的接入了

请大家安装好云应用之后,在云应用的右键菜单->客户端下载最载最新版本
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|神烦论坛 ( 苏ICP备18043773号 )

GMT+8, 2019-5-22 21:51

Powered by bby! X3.4

© 2015-2019 baibaoyun

快速回复 返回顶部 返回列表