📄 hwregister.pas.svn-base
字号:
unit HwRegister;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls, Registry, ShellApi;
type
THwRegisterForm = class(TForm)
lblMach: TLabel;
edtMach: TEdit;
lblReg: TLabel;
edtReg: TEdit;
bbtnReg: TBitBtn;
bbtnTry: TBitBtn;
Panel1: TPanel;
Image1: TImage;
bbtnHowReg: TBitBtn;
lblDest: TLabel;
lblHome: TLabel;
lblEmail: TLabel;
bbtnExit: TBitBtn;
lblTitle: TLabel;
bbtnWeb: TBitBtn;
lblProduct: TLabel;
cbProduct: TComboBox;
Bevel1: TBevel;
lblVer: TLabel;
cbVer: TComboBox;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtnRegClick(Sender: TObject);
procedure bbtnTryClick(Sender: TObject);
procedure bbtnHowRegClick(Sender: TObject);
procedure bbtnExitClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure bbtnWebClick(Sender: TObject);
procedure lblHomeClick(Sender: TObject);
procedure lblEmailClick(Sender: TObject);
private
ACount:Integer;
procedure SetInterface;
{ Private declarations }
public
{ Public declarations }
end;
var
HwRegisterForm: THwRegisterForm;
implementation
uses CommFun, SYSDATA;
{$R *.DFM}
procedure THwRegisterForm.SetInterface;
begin
Font.Name:=AFontName;
Caption:=GetDBString('COM00002001'); //软件注册
lblTitle.Caption:=GetDBString('COM00002002'); //本软件会不断更新,为了您更好使用本软件,请您支持正版软件的发展。
lblMach.Caption:=GetDBString('COM00002003'); //机器码
lblReg.Caption:=GetDBString('COM00002004'); //注册码
lblDest.Caption:=GetDBString('COM00002005'); //本软件是共享软件,不注册您只能使用45次,并且不能得到作者提供的服务,及免费升级!注册后没有任何限制,并可以免费升级,希望您支持中国共享软件的发展!
lblHome.Caption:=GetDBString('COM00002006'); //作者网站:http://howwell.mpc.cn
lblEmail.Caption:=GetDBString('COM00002007'); //电子邮件:how_well@163.com
bbtnHowReg.Caption:=GetDBString('COM00002008'); //'如何注册(&H)';
bbtnWeb.Caption:=GetDBString('COM00002009'); //'网上注册(&W)';
bbtnReg.Caption:=GetDBString('COM00002010'); //'注册(&R)';
bbtnTry.Caption:=GetDBString('COM00002011'); //'试用(&T)';
bbtnExit.Caption:=GetDBString('COM00002012'); //'退出(&X)';
lblProduct.Caption:=GetDBString('COM00002017'); //产品名
lblVer.Caption:=GetDBString('COM00002019'); //版本号
cbVer.Clear;
cbVer.Items.Add(GetDBString('COM00002020')); //单机版
cbVer.Items.Add(GetDBString('COM00002021')); //5用户版
cbVer.Items.Add(GetDBString('COM00002022')); //10用户版
cbVer.Items.Add(GetDBString('COM00002023')); //20用户版
cbVer.Items.Add(GetDBString('COM00002024')); //50用户版
cbVer.Items.Add(GetDBString('COM00002025')); //无限用户版
cbVer.ItemIndex:=0;
end;
procedure THwRegisterForm.FormCreate(Sender: TObject);
var
S:String;
AProdID:string; //产品编码
AProdVer:string; //产品版本号
AProdReg:string; //产品注册码
ARunTime:string; //产品运行次数
AFlag:Boolean;
AUsers:Integer;
begin
//设置界面信息
SetInterface;
ACount:=0;
AFlag:=False;
edtMach.Text:=Registered(GetHDSerialNumber,'HowWell');
cbProduct.Items.Clear;
//当所有的产品过期后(运行次数>=45),则不可再试用,必须注册后才可使用
SYSDM.qrySys800.Close;
SYSDM.qrySys800.SQL.Clear;
SYSDM.qrySys800.SQL.Add('select * from SYS800 where S800_007=-1 and S800_008=-1');
SYSDM.qrySys800.Open;
while not SYSDM.qrySys800.Eof do
begin
AProdID:=trim(SYSDM.qrySys800.FieldByName('S800_001').AsString); //产品编码
AProdVer:=SYSDM.qrySys800.FieldByName('S800_004').AsString; //产品版本号
AProdReg:=SYSDM.qrySys800.FieldByName('S800_005').AsString; //产品注册码
ARunTime:=SYSDM.qrySys800.FieldByName('S800_006').AsString; //产品运行次数
AUsers:=SYSDM.qrySys800.FieldByName('S800_009').AsInteger; //用户数量
//已注册的产品不显示
if AProdReg<>EncDecStr(Registered(edtMach.Text,AProdID+IntToStr(AUsers)),0) then
begin
cbProduct.Items.Add('['+AProdID+'] '+GetDBString(AProdID));
if not IsTry(AProdID,AProdVer,ARunTime) then AFlag:=True;
end;
SYSDM.qrySys800.Next;
end;
SYSDM.qrySys800.Close;
cbProduct.ItemIndex:=0;
bbtnTry.Visible:=not AFlag;
bbtnExit.Visible:=AFlag;
S:=EncDecStr(ARunTime,1);
try
StrToInt(S);
except
bbtnTry.Visible:=False;
bbtnExit.Visible:=True;
end;
if not bbtnExit.Visible then
Caption:=GetDBString('COM00002013')+S+GetDBString('COM00002014')+IntToStr(45-StrToInt(S))+GetDBString('COM00002015') //'软件注册 - 您已经使用了' '次,还有' '次可以使用!'
else
Caption:=GetDBString('COM00002016'); //'软件注册 - 试用期已过,请注册以后再使用';
end;
procedure THwRegisterForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
if ModalResult=1 then Exit;
if not bbtnExit.Visible then Application.Terminate;
end;
procedure THwRegisterForm.bbtnRegClick(Sender: TObject);
var
AProdID:String;
AUsers:Integer;
begin
//确定
AUsers:=0;
case cbVer.ItemIndex of
0:AUsers:=1;
1:AUsers:=5;
2:AUsers:=10;
3:AUsers:=20;
4:AUsers:=50;
5:AUsers:=9999;
end;
AProdID:=copy(cbProduct.Text,2,3);
if edtReg.Text=Registered(edtMach.Text,AProdID+IntToStr(AUsers)) then
begin
SYSDM.qrySys800.Close;
SYSDM.qrySys800.SQL.Clear;
SYSDM.qrySys800.SQL.Add('select * from SYS800 where S800_007=-1 and S800_001='+''''+AProdID+'''');
SYSDM.qrySys800.Open;
SYSDM.qrySys800.Edit;
SYSDM.qrySys800.FieldByName('S800_005').AsString:=EncDecStr(edtReg.Text,0); //注册码
SYSDM.qrySys800.FieldByName('S800_009').Value:=AUsers; //注册用户
SYSDM.qrySys800.Post;
ARegUsers:=ARegUsers+AUsers;
ADemoFlag:=False;
cbProduct.Items.Delete(cbProduct.ItemIndex);
cbProduct.ItemIndex:=0;
if cbProduct.Items.Count=0 then
begin
//注册成功,感谢您使用正版软件!
ShowMsg('《'+GetDBString(AProdID)+'》产品'+GetDBString('UMS10000138'),1);
ModalResult:=1;
end else
begin
//注册成功,感谢您使用正版软件!是否继续下一个产品的注册?
if ShowDialog('《'+GetDBString(AProdID)+'》产品'+GetDBString('UMS10000014'),1)=IDYES then
begin
edtReg.Text:='';
end else
begin
ModalResult:=1;
end;
end;
end else
begin
ACount:=ACount+1;
ShowMsg('UMS10000015'); //无效的注册码,请重新输入
edtReg.SetFocus;
if ACount>=3 then Application.Terminate;
end;
end;
procedure THwRegisterForm.bbtnTryClick(Sender: TObject);
var
ARunTime:string;
begin
//试用(&T)
SYSDM.qrySys800.Close;
SYSDM.qrySys800.SQL.Clear;
SYSDM.qrySys800.SQL.Add('select * from SYS800 where S800_007=-1');
SYSDM.qrySys800.Open;
while not SYSDM.qrySys800.Eof do
begin
ARunTime:=SYSDM.qrySys800.FieldByName('S800_006').AsString; //产品运行次数
ARunTime:=EncDecStr(ARunTime,1); //解密字符串
ARunTime:=IntToStr(StrToInt(ARunTime)+1); //运行次数加1
ARunTime:=EncDecStr(ARunTime,0); //字符串加密
SYSDM.qrySys800.Edit;
SYSDM.qrySys800.FieldByName('S800_006').AsString:=ARunTime;
SYSDM.qrySys800.Post;
SYSDM.qrySys800.Next;
end;
SYSDM.qrySys800.Close;
ModalResult:=1;
end;
procedure THwRegisterForm.bbtnHowRegClick(Sender: TObject);
begin
//如何注册(&W)
HtmlHelp(Application.Handle, AHelpFile+'::/Register.htm', $0000, nil);
end;
procedure THwRegisterForm.bbtnExitClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure THwRegisterForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_F1 then HtmlHelp(Application.Handle, AHelpFile+'::/Hwreg.htm', $0000, nil);
end;
procedure THwRegisterForm.bbtnWebClick(Sender: TObject);
begin
//网上注册(&P)...
Screen.Cursor:=crHourGlass;
ShellExecute(Handle, nil, PChar(AHome),nil,nil,SW_NORMAL);
Screen.Cursor:=crDefault;
end;
procedure THwRegisterForm.lblHomeClick(Sender: TObject);
begin
lblHome.Font.Color:=clPurple;
Screen.Cursor:=crHourGlass;
ShellExecute(Handle, nil, PChar(AHome),nil,nil,SW_NORMAL);
Screen.Cursor:=crDefault;
end;
procedure THwRegisterForm.lblEmailClick(Sender: TObject);
begin
lblEmail.Font.Color:=clPurple;
Screen.Cursor:=crHourGlass;
ShellExecute(Handle, nil, PChar('mailto:'+AEmail),nil,nil,SW_NORMAL);
Screen.Cursor:=crDefault;
end;
initialization
RegisterClass(THwRegisterForm);
finalization
UnRegisterClass(THwRegisterForm);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -