?? onguard2.pas
字號:
{*********************************************************}
{* ONGUARD2.PAS 1.13 *}
{* Copyright (c) 1996-02 TurboPower Software Co *}
{* All rights reserved. *}
{*********************************************************}
{$I ONGUARD.INC}
{$B-} {Complete Boolean Evaluation}
{$I+} {Input/Output-Checking}
{$P+} {Open Parameters}
{$T-} {Typed @ Operator}
{$W-} {Windows Stack Frame}
{$X+} {Extended Syntax}
{$IFNDEF Win32}
{$G+} {286 Instructions}
{$N+} {Numeric Coprocessor}
{$C MOVEABLE,DEMANDLOAD,DISCARDABLE}
{$ELSE}
{$J+} {Assignable Typed Constants} {!!.11}
{$ENDIF}
unit OnGuard2;
{-Code generation dialog}
interface
uses
{$IFDEF Win32} Windows, ComCtrls, {$ELSE} WinTypes, WinProcs, {$ENDIF}
SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Mask,
ExtCtrls, Tabnotbk, StdCtrls, Buttons, Messages,
OgConst,
OgNetWrk,
OgUtil,
OnGuard,
OnGuard3;
const
OGM_CHECK = WM_USER + 100;
OGM_QUIT = WM_USER + 101;
type
TCodeGenerateFrm = class(TForm)
GenerateGb: TGroupBox;
RegCodeCopySb: TSpeedButton;
GenerateBtn: TButton;
RegCodeEd: TEdit;
CodesNbk: TTabbedNotebook;
Label6: TLabel;
RegStrEd: TEdit;
RegStrCopySb: TSpeedButton;
RegRandomBtn: TButton;
Label7: TLabel;
SerialNumberEd: TEdit;
SerRandomBtn: TButton;
Label9: TLabel;
Label10: TLabel;
NetworkSlotsEd: TEdit;
Label11: TLabel;
UsageCountEd: TEdit;
DaysCountEd: TEdit;
SpecialDataEd: TEdit;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
OKBtn: TBitBtn;
CancelBtn: TBitBtn;
StartDateEd: TEdit;
EndDateEd: TEdit;
GroupBox1: TGroupBox;
UniqueModifierCb: TCheckBox;
MachineModifierCb: TCheckBox;
DateModifierCb: TCheckBox;
NoModifierCb: TCheckBox;
ModifierEd: TEdit;
Label2: TLabel;
Label4: TLabel;
Label15: TLabel;
Label17: TLabel;
Label19: TLabel;
UsageExpiresEd: TEdit;
SpecialExpiresEd: TEdit;
SerialExpiresEd: TEdit;
RegExpiresEd: TEdit;
DaysExpiresEd: TEdit;
ModDateEd: TEdit;
Label5: TLabel;
BlockKeyEd: TEdit;
GenerateKeySb: TSpeedButton;
Label1: TLabel;
StringModifierCb: TCheckBox; {!!.11}
ModStringEd: TEdit; {!!.11}
procedure FormCreate(Sender: TObject);
procedure ModifierClick(Sender: TObject);
procedure RegRandomBtnClick(Sender: TObject);
procedure GenerateBtnClick(Sender: TObject);
procedure SerRandomBtnClick(Sender: TObject);
procedure ParametersChanged(Sender: TObject);
procedure ModifierEdKeyPress(Sender: TObject; var Key: Char);
procedure RegStrCopySbClick(Sender: TObject);
procedure DateEdKeyPress(Sender: TObject; var Key: Char);
procedure RegCodeCopySbClick(Sender: TObject);
procedure TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
procedure GenerateKeySbClick(Sender: TObject);
procedure NumberEdKeyPress(Sender: TObject; var Key: Char);
procedure InfoChanged(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
FCode : TCode;
FCodeType : TCodeType;
FKey : TKey;
FKeyType : TKeyType;
FKeyFileName : string;
procedure OGMCheck(var Msg : TMessage);
message OGM_CHECK;
procedure OGMQuit(var Msg : TMessage);
message OGM_QUIT;
procedure SetCodeType(Value : TCodeType);
public
procedure SetKey(Value : TKey); {!!.08}
procedure GetKey(var Value : TKey); {!!.08}
property Code : TCode
read FCode;
property CodeType : TCodeType
read FCodeType
write SetCodeType;
property KeyFileName : string
read FKeyFileName
write FKeyFileName;
property KeyType : TKeyType
read FKeyType
write FKeyType;
end;
implementation
{$R *.DFM}
procedure TCodeGenerateFrm.FormCreate(Sender: TObject);
var
D : TDateTime;
begin
NoModifierCb.Checked := True;
CodesNbk.PageIndex := Ord(FCodeType);
BlockKeyEd.Text := BufferToHex(FKey, SizeOf(FKey));
if HexStringIsZero(BlockKeyEd.Text)then
BlockKeyEd.Text := '';
{initialize date edits}
StartDateEd.Text := OgFormatDate(Date); {!!.09}
EndDateEd.Text := OgFormatDate(Date); {!!.09}
ModDateEd.Text := OgFormatDate(Date); {!!.09}
D := EncodeDate(9999,12,31);
UsageExpiresEd.Text := OgFormatDate(D); {!!.09}
SpecialExpiresEd.Text := OgFormatDate(D); {!!.09}
SerialExpiresEd.Text := OgFormatDate(D); {!!.09}
RegExpiresEd.Text := OgFormatDate(D); {!!.09}
DaysExpiresEd.Text := OgFormatDate(D); {!!.09}
NoModifierCb.Checked := True; {!!.11}
InfoChanged(Self);
end;
procedure TCodeGenerateFrm.ModifierClick(Sender: TObject);
const
Busy : Boolean = False;
var
L : LongInt;
D : TDateTime;
S : string; {!!.11}
i : Integer; {!!.12}
begin
if Busy then
Exit;
{set busy flag so that setting "Checked" won't recurse}
Busy := True;
try
L := 0;
if (Sender = NoModifierCb) and NoModifierCb.Checked then begin
UniqueModifierCb.Checked := False;
MachineModifierCb.Checked := False;
DateModifierCb.Checked := False;
StringModifierCb.Checked := False; {!!.11}
ModifierEd.Color := clBtnFace; {!!.11}
ModifierEd.ReadOnly := True; {!!.11}
end else begin
NoModifierCb.Checked := False;
ModifierEd.Color := clWindow; {!!.11}
ModifierEd.ReadOnly := False; {!!.11}
end;
(*
if not UniqueModifierCb.Checked and
not MachineModifierCb.Checked and
not DateModifierCb.Checked and
not StringModifierCb.Checked and {!!.11}
(ModifierEd.Text = '') then begin {!!.11}
NoModifierCb.Checked := True;
ModifierEd.Color := clBtnFace; {!!.11}
ModifierEd.ReadOnly := True; {!!.11}
end;
*)
if MachineModifierCb.Checked then begin
if L = 0 then
L := GenerateMachineModifierPrim
else
L := L xor GenerateMachineModifierPrim;
end;
{set status of string field} {!!.11}
ModStringEd.Enabled := StringModifierCb.Checked; {!!.11}
if ModStringEd.Enabled then {!!.11}
ModStringEd.Color := clWindow {!!.11}
else {!!.11}
ModStringEd.Color := clBtnFace; {!!.11}
{!!.11}
if StringModifierCb.Checked then begin {!!.11}
S := ModStringEd.Text; {!!.11}
{strip accented characters from the string} {!!.12}
for i := Length(S) downto 1 do {!!.12}
if Ord(S[i]) > 127 then {!!.12}
Delete(S, i, 1); {!!.12}
L := StringHashELF(S); {!!.11}
end; {!!.11}
{set status of date field}
ModDateEd.Enabled := DateModifierCb.Checked;
if ModDateEd.Enabled then
ModDateEd.Color := clWindow
else
ModDateEd.Color := clBtnFace;
if DateModifierCb.Checked then begin
try
D := StrToDate(ModDateEd.Text);
except
{ignore errors and don't generate modifier}
D := 0;
end;
if Trunc(D) <> 0 then begin
if L = 0 then
L := GenerateDateModifierPrim(D)
else
L := L xor GenerateDateModifierPrim(D);
end;
end;
if UniqueModifierCb.Checked then begin
if L = 0 then
L := GenerateUniqueModifierPrim
else
L := L xor GenerateUniqueModifierPrim;
end;
if L = 0 then
ModifierEd.Text := ''
else
ModifierEd.Text := '$' + BufferToHex(L, 4);
finally
Busy := False;
end;
end;
procedure TCodeGenerateFrm.RegRandomBtnClick(Sender: TObject);
var
I : Integer;
L : LongInt;
Bytes : array[0..3] of Byte absolute L;
begin
Randomize;
for I := 0 to 3 do
Bytes[I] := Random(256);
RegStrEd.Text := IntToHex(L, 8);
end;
procedure TCodeGenerateFrm.GenerateBtnClick(Sender: TObject);
var
I : LongInt;
Work : TCode;
K : TKey;
Modifier : LongInt;
D1, D2 : TDateTime;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -