?? onguard2.pas
字號:
begin
Modifier := 0;
if ((ModifierEd.Text = '') or HexToBuffer(ModifierEd.Text, Modifier, SizeOf(LongInt))) then begin
K := FKey;
ApplyModifierToKeyPrim(Modifier, K, SizeOf(K));
case CodesNbk.PageIndex of
0 : begin
try
D1 := StrToDate(StartDateEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidStartDate]);
StartDateEd.SetFocus;
Exit;
end else
raise;
end;
try
D2 := StrToDate(EndDateEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidStartDate]);
EndDateEd.SetFocus;
Exit;
end else
raise;
end;
InitDateCode(K, Trunc(D1), Trunc(D2), FCode);
Work := FCode;
MixBlock(T128bit(K), Work, False);
{sanity check}
StartDateEd.Text := OgFormatDate(Work.FirstDate+BaseDate); {!!.09}
EndDateEd.Text := OgFormatDate(Work.EndDate+BaseDate); {!!.09}
end;
1 : begin
try
D1 := StrToDate(DaysExpiresEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidExDate]);
DaysExpiresEd.SetFocus;
Exit;
end else
raise;
end;
InitDaysCode(K, StrToIntDef(DaysCountEd.Text, 0), D1, FCode);
end;
2 : begin
try
D1 := StrToDate(RegExpiresEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidExDate]);
RegExpiresEd.SetFocus;
Exit;
end else
raise;
end;
InitRegCode(K, RegStrEd.Text, D1, FCode);
end;
3 : begin
try
D1 := StrToDate(SerialExpiresEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidExDate]);
SerialExpiresEd.SetFocus;
Exit;
end else
raise;
end;
InitSerialNumberCode(K, StrToIntDef(SerialNumberEd.Text, 0), D1, FCode);
end;
4 : begin
try
D1 := StrToDate(UsageExpiresEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidExDate]);
UsageExpiresEd.SetFocus;
Exit;
end else
raise;
end;
InitUsageCode(K, StrToIntDef(UsageCountEd.Text, 0), D1, FCode);
end;
5 : begin
I := StrToIntDef(NetworkSlotsEd.Text, 2);
if I < 1 then {!!.08}
I := 1; {!!.08}
NetworkSlotsEd.Text := IntToStr(I);
EncodeNAFCountCode(K, I, FCode);
end;
6 : begin
try
D1 := StrToDate(SpecialExpiresEd.Text);
except
on EConvertError do begin
ShowMessage(StrRes[SCInvalidExDate]);
SpecialExpiresEd.SetFocus;
Exit;
end else
raise;
end;
InitSpecialCode(K, StrToIntDef(SpecialDataEd.Text, 0), D1, FCode);
end;
end;
RegCodeEd.Text := BufferToHex(FCode, SizeOf(FCode));
end else
MessageDlg(StrRes[SCInvalidKeyOrModifier], mtError, [mbOK], 0);
end;
procedure TCodeGenerateFrm.SerRandomBtnClick(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);
SerialNumberEd.Text := IntToStr(Abs(L));
end;
procedure TCodeGenerateFrm.ParametersChanged(Sender: TObject);
begin
RegCodeEd.Text := '';
end;
procedure TCodeGenerateFrm.RegStrCopySbClick(Sender: TObject);
var
OldSelStart: Integer;
begin
if (RegStrEd.SelLength > 0) then
RegStrEd.CopyToClipboard
else begin
OldSelStart := RegStrEd.SelStart;
RegStrEd.SelStart := 0;
RegStrEd.SelLength := MaxInt;
RegStrEd.CopyToClipboard;
RegStrEd.SelStart := OldSelStart;
RegStrEd.SelLength := 0;
end;
end;
{!!.04}
procedure TCodeGenerateFrm.DateEdKeyPress(Sender: TObject; var Key: Char);
begin
if (not (Key in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', DateSeparator])) and (not (Key < #32)) then begin
MessageBeep(0);
Key := #0;
end;
end;
procedure TCodeGenerateFrm.NumberEdKeyPress(Sender: TObject; var Key: Char);
const
CIntChars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
begin
if (not (Key in CIntChars)) and (not (Key < #32)) then begin
MessageBeep(0);
Key := #0;
end;
end;
procedure TCodeGenerateFrm.ModifierEdKeyPress(Sender: TObject; var Key: Char);
const
CHexChars = ['$', 'A', 'B', 'C', 'D', 'E', 'F', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
begin
if (not (Key in CHexChars)) and (not (Key < #32)) then begin
MessageBeep(0);
Key := #0;
end;
end;
procedure TCodeGenerateFrm.RegCodeCopySbClick(Sender: TObject);
var
OldSelStart: Integer;
begin
if (RegCodeEd.SelLength > 0) then
RegCodeEd.CopyToClipboard
else begin
OldSelStart := RegCodeEd.SelStart;
RegCodeEd.SelStart := 0;
RegCodeEd.SelLength := MaxInt;
RegCodeEd.CopyToClipboard;
RegCodeEd.SelStart := OldSelStart;
RegCodeEd.SelLength := 0;
end;
end;
procedure TCodeGenerateFrm.TabbedNotebook1Change(Sender: TObject; NewTab: Integer;
var AllowChange: Boolean);
begin
AllowChange := True;
RegCodeEd.Text := '';
NoModifierCb.Checked := True;
ModifierEd.Text := '';
end;
procedure TCodeGenerateFrm.GenerateKeySbClick(Sender: TObject);
var
F : TKeyMaintFrm;
begin
F := TKeyMaintFrm.Create(Self);
try
F.SetKey(FKey);
F.KeyType := FKeyType;
F.KeyFileName := FKeyFileName;
F.ShowHint := ShowHint;
if F.ShowModal = mrOK then begin
BlockKeyEd.Text := BufferToHex(FKey, SizeOf(FKey));
if HexStringIsZero(BlockKeyEd.Text)then
BlockKeyEd.Text := '';
FKeyType := F.KeyType;
FKeyFileName := F.KeyFileName;
InfoChanged(Self);
end;
finally
F.Free;
end;
end;
procedure TCodeGenerateFrm.SetCodeType(Value : TCodeType);
begin
if Value <> TCodeType(CodesNbk.PageIndex) then begin
FCodeType := Value;
CodesNbk.PageIndex := Ord(FCodeType);
end;
end;
procedure TCodeGenerateFrm.SetKey(Value : TKey);
begin
FKey := Value;
BlockKeyEd.Text := BufferToHex(FKey, SizeOf(FKey));
if HexStringIsZero(BlockKeyEd.Text)then
BlockKeyEd.Text := '';
end;
procedure TCodeGenerateFrm.InfoChanged(Sender: TObject);
begin
GenerateBtn.Enabled := HexToBuffer(BlockKeyEd.Text, FKey, SizeOf(FKey));
OKBtn.Enabled := Length(RegCodeEd.Text) > 0;
end;
procedure TCodeGenerateFrm.OGMCheck(var Msg : TMessage);
var
F : TKeyMaintFrm;
begin
if not HexToBuffer(BlockKeyEd.Text, FKey, SizeOf(FKey)) then begin
{get a key}
F := TKeyMaintFrm.Create(Self);
try
F.SetKey(FKey);
F.KeyType := ktRandom;
F.KeyFileName := FKeyFileName;
F.ShowHint := ShowHint;
if F.ShowModal = mrOK then begin
F.GetKey(FKey);
BlockKeyEd.Text := BufferToHex(FKey, SizeOf(FKey));
if HexStringIsZero(BlockKeyEd.Text)then
BlockKeyEd.Text := '';
FKeyFileName := F.KeyFileName;
InfoChanged(Self);
end else
PostMessage(Handle, OGM_QUIT, 0, 0);
finally
F.Free;
end;
end;
end;
procedure TCodeGenerateFrm.OGMQuit(var Msg : TMessage);
begin
ModalResult := mrCancel;
end;
procedure TCodeGenerateFrm.FormShow(Sender: TObject);
begin
PostMessage(Handle, OGM_CHECK, 0, 0);
end;
procedure TCodeGenerateFrm.GetKey(var Value : TKey);
begin
Value := FKey;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -