神烦论坛

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

【Delphi】百宝云注册码系统接入教程

[复制链接]

96

主题

220

帖子

1395

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1395
发表于 2016-9-28 18:22:57 | 显示全部楼层 |阅读模式
【Delphi】百宝云注册码系统接入教程



Delphi的接入是使用的注册码系统DLL来实现的,因此大家只要掌握Delphi如何调用C++的DLL知识,那么学习起来就方便多了,如果对这个Delphi调用C++的DLL不熟悉的,自行百度补脑!!!


第一步:下载附件源码

如果附件的源码不是最新版本的,请自己安装百宝云注册码系统应用,之后下载客户端里的最新源码。传送链接:
免费版:http://www.91shenfan.com/index.php?index/info&id=15
收费版:http://www.91shenfan.com/index.php?index/info&id=41 或者 http://www.91shenfan.com/index.php?index/info&id=58

使用Delphi的IDE打开项目,发现项目结构如下:
1.png
结构说明:
test:为主界面的功能代码。
test2:为登录界面的功能代码。
BbyRegcodeSystem:为百宝云注册码系统提供的DLL接口封装文件。目前只封装了部分功能,需要其他的功能,参考文档自行添加!

我们先来看看附件示例里最终实现的效果图:
登录界面:
5.png

主界面效果图:
6.png
这些功能对一个脚本或者软件来说,已经完全够用了。至于其他的一些接口,大家就在后面慢慢学习了吧!



下面我们就来看看怎么接入注册码系统,完全注册码的登录验证操作!

第二步:接入步骤

1、复制BbyRegcodeSystem功能里的代码到自己的项目里!
2.png
上图是百宝云注册码系统DLL封装方法列表。这里接入的是ASCII编码的接口!

2、调用初始化注册码系统接口:InitDll。
这个接口必须在其他所有接口之前调用(除了设置机器码模式接口:SetMachineMode之外),只有这个InitDll成功,才能正确的执行后面的其他功能。
例如示例里的代码,以下是关键代码片段:
  1. // 初始化注册码系统
  2.   m_InitFlag := InitDll(PChar(g_BbyTokenStr) , PChar(g_ProjNameStr));
  3.   if m_InitFlag = 1 then
  4.     begin
  5.       btnInitDll.Enabled := False;
  6.     end
  7.   else
  8.     begin
  9.       btnInitDll.Enabled := True;
  10.       GetLastErrorInfo(pBuffer, 1024);
  11.       ShowMessage('请修改界面的信息,再点击初始化系统按钮!初始化失败原因:' + pBuffer);
  12.     end;
复制代码
如果这个接口调用成功了,那么后面再调用的话,会失败的! 只有失败的情况下,才可以多次调用,直到成功!
调用失败的话,可以通过获取错误信息接口(GetLastErrorInfo)来查看错误的原因!

3、调用注册码登录接口:LoginRegCode
调用这个接口,成功返回1,失败返回0,错误信息可以通过获取错误信息接口(GetLastErrorInfo)查看。
这个接口登录成功之后,需要自己写心跳线程,来验证注册码的使用状态!
例如示例里的代码,以下是代码片段:
  1. var
  2.   result : Integer;
  3.   ID: THandle;
  4.   
  5. begin
  6.   g_ProjNameStr := Edit1.Text;
  7.   g_BbyTokenStr:=Edit2.Text;
  8.   g_RegcodeStr := Edit3.Text;

  9.   // 注册码登录
  10.   result := LoginRegCode(PChar(g_RegcodeStr));
  11.   if result = 1 then
  12.     begin
  13.       WriteIniFile('Data','ProjName', Edit1.Text);
  14.       WriteIniFile('Data','RegCode',Edit3.Text);
  15.       ShowMessage('登录成功!');
  16.       Self.ModalResult:=mrOk;

  17.       CreateThread(nil, 0, @CheckRegcodeThread, nil, 0, ID);
  18.       Exit;
  19.     end
  20.   else
  21.     begin
  22.       GetLastErrorInfo(pBuffer, 1024);
  23.       ShowMessage('登录失败!' + pBuffer);
  24.     end;
  25. end;
复制代码

登录成功之后,这里会开启一个线程,来完成注册码的心跳验证!


4、心跳验证注册码,使用获取注册码剩余时间来做:GetRegCodeTime
调用这个接口来获取注册码的剩余时间,如果调用正确的话,会返回注册码的剩余时间,如果失败的话,会返回相应的错误ID。

下面是心跳线程的实现代码。
  1. // 线程方法    获取注册码的剩余时间
  2. function CheckRegcodeThread(p:Pointer):Integer; stdcall;
  3. var
  4.   nRegcodeTime: Integer;
  5.   pBuffer : array[0..1024] of Char;
  6. begin
  7.   while True do
  8.   begin
  9.     nRegcodeTime := GetRegCodeTime();
  10.     if nRegcodeTime <= 0 then
  11.       begin
  12.         GetLastErrorInfo(pBuffer, 1024);
  13.         MessageBox(0,PChar('注册码 效验失败,可能是注册码已过期!' + pBuffer), PChar('警告'), 0);
  14.         Application.Terminate;
  15.       end;
  16.     g_LeaveTimeStr := Format('注册码的剩余时间:%d 小时%d 分钟',[trunc(nRegcodeTime/60), nRegcodeTime mod 60]);
  17.     Sleep(60*1000);
  18.   end;

  19. end;
复制代码


通过上面的这几步就可以接入百宝云注册码系统了。

接入成功之后,我们再来学习下其他几个重要的接口。



其他接口介绍

1、 注册码登录自动验证接口:LoginRegCodeAuto
这个接口调用成功之后,内部会自动开启心跳线程来检测注册码的状态。当心跳验证失败之后,内部会自动退出软件!

2、更新接口:UpdateFile,UpdateFileEx
这2个接口都可以用来更新软件,但是建议大家使用UpdateFileEx接口来实现。UpdateFileEx接口的第二个参数是控制更新成功之后,是否自动启动更新后的软件。
UpdateFile接口更新成功之后,会弹出框,让用户选择是否启动更新后的软件!

3、获取自定义数据接口:GetCustom
这个接口是用来获取作者存储在注册码服务器的数据,建议大家在实际项目里使用这个接口,这样以来就可以增大软件被PO JIE的风险!

4、设置机器码模式接口:SetMachineMode
如果使用默认的方式登录,在同一台机器上出现不同的机器码,或者说注册码登录的时候,返回错误为注册码已经绑定了其他机器。
这样是因为默认的是SetMachineMode使用0模式。所以只要设置SetMachineMode的参数1即可更换获取机器码的方式。

5、注册码客户端充值接口:Charge
使用这个接口,用户就可以在客户端上直接进行充值了!但是这个接口是以卡充卡模式充值的,而且充值卡必须是一张新卡。具体错误看错误信息。

6、解绑接口:Ubind
这个解绑接口,有二种模式,当不传解绑密码时,那么只能在登录成功的机器上解绑,如果传入密码的话,那么就使用注册码的解绑密码进行解绑。



如果在实际操作过程中遇到不可解决的问题,可以联系在线客服,或者是加入:309604797咨询。

附件:
注册码接入delphi示例.zip (767.39 KB, 下载次数: 267)

评分

参与人数 1金钱 +1 收起 理由
老光 + 1 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-27 16:23

Powered by bby! X3.4

© 2015-2024 baibaoyun

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