lazarus-ccr/components/onguard/examples/regdemo/rcg_main.pas

160 lines
3.5 KiB
ObjectPascal

unit rcg_Main;
{$mode objfpc}{$H+}
interface
uses
SysUtils, Classes,Controls, Forms, Dialogs,
Buttons, StdCtrls,LResources, OnGuard, OgUtil, ExtCtrls;
type
{ TrcgMain }
TrcgMain = class(TForm)
OgMakeKeys1: TOgMakeKeys;
lblAppKey: TLabel;
edtAppKey: TEdit;
chkMachMod: TCheckBox;
edtMachineMod: TEdit;
edtSerialNumber: TEdit;
lblSerialNumber: TLabel;
lblReleaseCode: TLabel;
edtReleaseCode: TEdit;
Bevel1: TBevel;
btnExit: TButton;
chkExpires: TCheckBox;
edtExpires: TEdit;
spdAppKey: TBitBtn;
spdReleaseCode: TBitBtn;
btnReadme: TButton;
procedure spdAppKeyClick(Sender: TObject);
procedure chkMachModClick(Sender: TObject);
procedure spdReleaseCodeClick(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure chkExpiresClick(Sender: TObject);
procedure edtAppKeyChange(Sender: TObject);
procedure btnReadmeClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ApplicationKey : TKey;
end;
var
rcgMain: TrcgMain;
implementation
uses
frm_Readme;
procedure TrcgMain.spdAppKeyClick(Sender: TObject);
begin
if OgMakeKeys1.Execute then begin
OgMakeKeys1.GetKey(ApplicationKey);
edtAppKey.Text := BufferToHex(ApplicationKey, sizeof(ApplicationKey));
end;
end;
procedure TrcgMain.chkMachModClick(Sender: TObject);
begin
edtMachineMod.Enabled := chkMachMod.Checked;
if edtMachineMod.Enabled then begin
edtMachineMod.SetFocus;
edtMachineMod.SelectAll;
end;
end;
procedure TrcgMain.chkExpiresClick(Sender: TObject);
begin
edtExpires.Enabled := chkExpires.Checked;
if edtExpires.Enabled then begin
edtExpires.SetFocus;
edtExpires.SelectAll;
end;
end;
procedure TrcgMain.spdReleaseCodeClick(Sender: TObject);
var
Key : TKey;
Modifier : longint;
SerialNum : longint;
Expires : TDateTime;
ReleaseCode : TCode;
CodeString : string;
begin
edtReleaseCode.Text := '';
// Get the key that will be used to generate the ReleaseCode
Key := ApplicationKey;
if chkMachMod.Checked then
try
Modifier := StrToInt(edtMachineMod.Text);
ApplyModifierToKeyPrim(Modifier, Key, sizeof(Key));
except
MessageDlg('Invalid Machine Modifier. Please check your entry and try again.', mtError, [mbOK], 0);
exit;
end;
// Get the expiration date
if chkExpires.Checked then
try
Expires := StrToDate(edtExpires.Text);
except
MessageDlg('Invalid Expiration Date. Please check your entry and try again.', mtError, [mbOK], 0);
exit;
end
else
Expires := 0;
// Get the serial number
try
SerialNum := StrToInt(edtSerialNumber.Text);
except
MessageDlg('Invalid Serial Number. Please check your entry and try again.', mtError, [mbOK], 0);
exit;
end;
// Create the release code for the data givien
InitSerialNumberCode(Key, SerialNum, Expires, ReleaseCode);
CodeString := BufferToHex(ReleaseCode, sizeof(ReleaseCode));
// Insert spaces in the release code string for easier reading
System.Insert(' ', CodeString, 13);
System.Insert(' ', CodeString, 09);
System.Insert(' ', CodeString, 05);
edtReleaseCode.Text := CodeString;
end;
procedure TrcgMain.edtAppKeyChange(Sender: TObject);
begin
edtReleaseCode.Text := '';
end;
procedure TrcgMain.btnExitClick(Sender: TObject);
begin
Close;
end;
procedure TrcgMain.btnReadmeClick(Sender: TObject);
begin
frmReadme.Show;
end;
initialization
{$i rcg_main.lrs}
end.