CodeTyphon自带例子源码:限制运行日期

来源:互联网 发布:营养搭配软件 编辑:程序博客网 时间:2024/05/14 03:59


C:\codetyphon\CodeOcean\OnGuard\samples\exdys30

    这个例子演示了直接在代码中写入超期日期。软件第一次运行时,生成ini文件并写入超期时间,例如2015-11-30,如果当前运行时间超过改时间,则提示并退出。






{********************************************************************** CodeOcean Demo for Package pl_OnGuard.pkg This unit is part of CodeTyphon Project (http://www.pilotlogic.com/)***********************************************************************}(*  This program uses the TOgDaysCode component. The first time the  program is run, the necessary information is created and stored  in an INI file. In addition, the program is given a "drop dead"  date, i.e., regardless of how many days the program has been used,  it cannont be used after that date (2014-12-31).  NOTE:   *** This feature has now been disable in OnGuard ***  InvalidCount is set to 3, user is allowed to 3 times break the rules,  for example changing date back to execute program after trial period expired.*)unit Exdys30u;interfaceuses  SysUtils, Classes, Controls,  Forms, Dialogs,LResources, StdCtrls, Buttons,  OnGuard,OgUtil,IniFiles;const  CKey : TKey = ($E5,$8F,$84,$D6,$92,$C9,$A4,$D8,                 $1A,$FA,$6F,$8D,$AB,$FC,$DF,$B4);type  { TForm1 }  TForm1 = class(TForm)    Memo1: TMemo;    CloseBtn: TBitBtn;    OgDaysCode1: TOgDaysCode;    Label1: TLabel;    procedure FormCreate(Sender: TObject);    procedure OgDaysCode1GetKey(Sender: TObject; var Key: TKey);    procedure OgDaysCode1GetCode(Sender: TObject; var Code: TCode);    procedure OgDaysCode1ChangeCode(Sender: TObject; Code: TCode);    procedure OgDaysCode1Checked(Sender: TObject; Status: TCodeStatus);  private    codeinvalid : Boolean;  public    { Public declarations }    TheDir  : string;    IniFile : TIniFile;  end;var  Form1: TForm1;implementation{==========================================================================}procedure TForm1.OgDaysCode1GetKey(Sender: TObject; var Key: TKey);begin  Key := CKey;end;procedure TForm1.FormCreate(Sender: TObject);begin    codeinvalid := false;end;{==========================================================================}procedure TForm1.OgDaysCode1GetCode(Sender: TObject; var Code: TCode);var  S       : string;  Expires : TDateTime;  L       : integer;begin  {force the INI file to be in the same directory as the application}  TheDir := ExtractFilePath(ParamStr(0));  {  L := Length(TheDir);  if (L > 3) and (TheDir[L] <> '\') then    TheDir := TheDir + '\';}  {open Ini File}  IniFile := TIniFile.Create(TheDir + 'Days30.INI');  try    {try to read release code}    S := IniFile.ReadString('Codes', 'DaysCode', 'NoCode');    {If default string returned, create code on the fly}    if (S = 'NoCode') then begin      { force absolute ("drop dead") expiration date of 2014-12-31 }      Expires := EncodeDate(2015, 11, 30);      InitDaysCode(CKey, 12, Expires, Code,3);      {save string representation of release code to Ini File}      S := BufferToHex(Code, SizeOf(Code));      IniFile.WriteString('Codes', 'DaysCode', S);    end else      {convert retrieved string to a code}      HexToBuffer(S, Code, SizeOf(Code));  finally    IniFile.Free;  end;end;{==========================================================================}procedure TForm1.OgDaysCode1ChangeCode(Sender: TObject; Code: TCode);var  S       : string;begin  if codeinvalid then    Exit;  IniFile := TIniFile.Create(TheDir + 'Days30.ini');  try    {convert Code to string for writing to INI file}    S := BufferToHex(Code, SizeOf(Code));    IniFile.WriteString('Codes', 'DaysCode', S);  finally    IniFile.Free;  end;end;{==========================================================================}procedure TForm1.OgDaysCode1Checked(Sender: TObject; Status: TCodeStatus);var  S : string;begin  case Status of    ogValidCode    : begin                       Label1.Caption := 'Days Remaining: '                                       + IntToStr(OgDaysCode1.GetValue);                       Exit;                     end;    ogInvalidCode  :    begin     S := 'Invalid Code';     codeinvalid := true;    end;    ogDayCountUsed : S := 'Program used more than 30 days' + #13 +                          'Please register NOW';    ogCodeExpired  : S := 'Evaluation period expired' + #13 +                          'Please register NOW';  end;  ShowMessage(S);  Application.Terminate;end;initialization{$i exdys30u.lrs}end.



0 0
原创粉丝点击