|
【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打开项目,发现项目结构如下:
结构说明:
test:为主界面的功能代码。
test2:为登录界面的功能代码。
BbyRegcodeSystem:为百宝云注册码系统提供的DLL接口封装文件。目前只封装了部分功能,需要其他的功能,参考文档自行添加!
我们先来看看附件示例里最终实现的效果图:
登录界面:
主界面效果图:
这些功能对一个脚本或者软件来说,已经完全够用了。至于其他的一些接口,大家就在后面慢慢学习了吧!
下面我们就来看看怎么接入注册码系统,完全注册码的登录验证操作!
1、复制BbyRegcodeSystem功能里的代码到自己的项目里!
上图是百宝云注册码系统DLL封装方法列表。这里接入的是ASCII编码的接口!
2、调用初始化注册码系统接口:InitDll。
这个接口必须在其他所有接口之前调用(除了设置机器码模式接口:SetMachineMode之外),只有这个InitDll成功,才能正确的执行后面的其他功能。
例如示例里的代码,以下是关键代码片段:
- // 初始化注册码系统
- m_InitFlag := InitDll(PChar(g_BbyTokenStr) , PChar(g_ProjNameStr));
- if m_InitFlag = 1 then
- begin
- btnInitDll.Enabled := False;
- end
- else
- begin
- btnInitDll.Enabled := True;
- GetLastErrorInfo(pBuffer, 1024);
- ShowMessage('请修改界面的信息,再点击初始化系统按钮!初始化失败原因:' + pBuffer);
- end;
复制代码 如果这个接口调用成功了,那么后面再调用的话,会失败的! 只有失败的情况下,才可以多次调用,直到成功!
调用失败的话,可以通过获取错误信息接口(GetLastErrorInfo)来查看错误的原因!
3、调用注册码登录接口:LoginRegCode
调用这个接口,成功返回1,失败返回0,错误信息可以通过获取错误信息接口(GetLastErrorInfo)查看。
这个接口登录成功之后,需要自己写心跳线程,来验证注册码的使用状态!
例如示例里的代码,以下是代码片段:- var
- result : Integer;
- ID: THandle;
-
- begin
- g_ProjNameStr := Edit1.Text;
- g_BbyTokenStr:=Edit2.Text;
- g_RegcodeStr := Edit3.Text;
- // 注册码登录
- result := LoginRegCode(PChar(g_RegcodeStr));
- if result = 1 then
- begin
- WriteIniFile('Data','ProjName', Edit1.Text);
- WriteIniFile('Data','RegCode',Edit3.Text);
- ShowMessage('登录成功!');
- Self.ModalResult:=mrOk;
- CreateThread(nil, 0, @CheckRegcodeThread, nil, 0, ID);
- Exit;
- end
- else
- begin
- GetLastErrorInfo(pBuffer, 1024);
- ShowMessage('登录失败!' + pBuffer);
- end;
- end;
复制代码
登录成功之后,这里会开启一个线程,来完成注册码的心跳验证!
4、心跳验证注册码,使用获取注册码剩余时间来做:GetRegCodeTime
调用这个接口来获取注册码的剩余时间,如果调用正确的话,会返回注册码的剩余时间,如果失败的话,会返回相应的错误ID。
下面是心跳线程的实现代码。
- // 线程方法 获取注册码的剩余时间
- function CheckRegcodeThread(p:Pointer):Integer; stdcall;
- var
- nRegcodeTime: Integer;
- pBuffer : array[0..1024] of Char;
- begin
- while True do
- begin
- nRegcodeTime := GetRegCodeTime();
- if nRegcodeTime <= 0 then
- begin
- GetLastErrorInfo(pBuffer, 1024);
- MessageBox(0,PChar('注册码 效验失败,可能是注册码已过期!' + pBuffer), PChar('警告'), 0);
- Application.Terminate;
- end;
- g_LeaveTimeStr := Format('注册码的剩余时间:%d 小时%d 分钟',[trunc(nRegcodeTime/60), nRegcodeTime mod 60]);
- Sleep(60*1000);
- end;
- 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, 下载次数: 558)
|
评分
-
查看全部评分
|