123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- unit ScAuthFrm;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, jpeg;
- type
- TAuthorizeForm = class(TForm)
- nbMain: TNotebook;
- btnPrev: TButton;
- btnNext: TButton;
- btnCancel: TButton;
- Label1: TLabel;
- Panel1: TPanel;
- Memo1: TMemo;
- Label4: TLabel;
- gbManual: TGroupBox;
- rbManual: TRadioButton;
- gbAuthFile: TGroupBox;
- rbAuthFile: TRadioButton;
- btnBrowseAuthFile: TButton;
- OpenDialog1: TOpenDialog;
- leAuthorize: TLabeledEdit;
- leAuthFile: TLabeledEdit;
- Image1: TImage;
- mmFinish: TMemo;
- Image2: TImage;
- Label3: TLabel;
- Label7: TLabel;
- Label2: TLabel;
- leHaspID: TLabeledEdit;
- lblPhone: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- Label8: TLabel;
- Label9: TLabel;
- Panel3: TPanel;
- Image3: TImage;
- Label10: TLabel;
- lblHint: TLabel;
- Panel2: TPanel;
- procedure FormCreate(Sender: TObject);
- procedure btnCancelClick(Sender: TObject);
- procedure nbMainPageChanged(Sender: TObject);
- procedure btnPrevClick(Sender: TObject);
- procedure btnNextClick(Sender: TObject);
- procedure rbAuthFileClick(Sender: TObject);
- procedure rbManualClick(Sender: TObject);
- procedure btnBrowseAuthFileClick(Sender: TObject);
- procedure Label9MouseEnter(Sender: TObject);
- procedure Label9MouseLeave(Sender: TObject);
- procedure Label9Click(Sender: TObject);
- private
- { Private declarations }
- procedure InternalAuthorize(AFile: string);
- procedure InternalAuthorizeByText(AKey: string);
- // 0 正确;-1 错误; -2 损坏
- function CheckAuthorizeFile(AFile: string): Integer;
- public
- { Public declarations }
- end;
- function Authorize: Boolean;
- implementation
- uses
- ScUtils, ScEncryptUnit, CryptUtils, ScHaspPwd, ShellAPI;
- {$R *.dfm}
- function Authorize: Boolean;
- var
- Form: TAuthorizeForm;
- begin
- {$IFDEF _ScNet}
- {$ELSE}
- if bAuthorized then
- begin
- MessageHint(0, '本产品已注册。'#13#10'产品序列号为:' + strHaspID);
- Exit;
- end;
- Form := TAuthorizeForm.Create(nil);
- try
- Result := Form.ShowModal = mrOK;
- finally
- Form.Free;
- end;
- {$ENDIF}
- end;
- const
- strWelcome = '尊敬的用户:'#13#10#13#10 +
- ' 感谢您购买《纵横SmartCost工程造价管理系统》!'#13#10#13#10 +
- ' 您现在可以开始使用本系统,为了保障您的权益,客服中心将有专人与您联系,以完成产品的注册。'#13#10#13#10 +
- ' 在完成注册前,本产品可以正常使用50次或200小时,在这段时间内,若未完成注册,请查询“帮助->产品注册”菜单,以完成注册,或咨询客服中心。'#13#10#13#10#13#10#13#10 +
- ' 点击“下一步”开始注册。';
- strSuccess = '恭喜您!您已经注册成功!'#13#10#13#10'请重新运行程序即可正常使用软件。';
- strFailed = '注册失败,请确认您的软件合法性,以及产品编号的正确性。'#13#10#13#10'详情请咨询客服中心。';
- procedure TAuthorizeForm.FormCreate(Sender: TObject);
- begin
- nbMain.PageIndex := 0;
- Memo1.Lines.Clear;
- Memo1.Text := Format(strWelcome, [LoadAuthorizePhone]);
- lblPhone.Caption := LoadAuthorizePhone;
- leHaspID.Text := strHaspID;
- end;
- procedure TAuthorizeForm.btnCancelClick(Sender: TObject);
- begin
- ModalResult := mrCancel;
- Close;
- end;
- procedure TAuthorizeForm.nbMainPageChanged(Sender: TObject);
- begin
- if nbMain.PageIndex = 0 then
- btnPrev.Enabled := False
- else
- btnPrev.Enabled := True;
- if nbMain.PageIndex = nbMain.Pages.Count - 1 then
- begin
- btnPrev.Enabled := False;
- btnNext.Enabled := True;
- btnNext.Caption := '完成(&O)';
- btnCancel.Enabled := False;
- end;
- case nbMain.PageIndex of
- 0:
- lblHint.Caption := '产品注册概述';
- 1:
- lblHint.Caption := '注册方式提示';
- 2:
- lblHint.Caption := '进行注册';
- 3:
- lblHint.Caption := '完成注册';
- end;
- end;
- procedure TAuthorizeForm.btnPrevClick(Sender: TObject);
- begin
- nbMain.PageIndex := nbMain.PageIndex - 1;
- end;
- procedure TAuthorizeForm.btnNextClick(Sender: TObject);
- begin
- case nbMain.PageIndex of
- 2:
- begin
- if rbAuthFile.Checked then
- begin
- if not FileExists(leAuthFile.Text) then
- begin
- MessageHint(0, '指定的注册文件不存在,请重新选择。');
- Exit;
- end
- else if CheckAuthorizeFile(leAuthFile.Text) < 0 then
- begin
- MessageHint(0, '指定的注册文件不是有效的SmartCost注册文件,请重新选择。');
- Exit;
- end;
- InternalAuthorize(leAuthFile.Text);
- end
- else if rbManual.Checked then
- begin
- if leAuthorize.Text = '' then
- begin
- MessageHint(0, '请输入注册码。');
- Exit;
- end;
- InternalAuthorizeByText(leAuthorize.Text);
- end;
- if bAuthorized then
- begin
- mmFinish.Text := strSuccess;
- Image1.Visible := True;
- Image2.Visible := False;
- end
- else
- begin
- mmFinish.Text := strFailed;
- Image1.Visible := False;
- Image2.Visible := True;
- end;
- end;
- 3:
- begin
- ModalResult := mrOK;
- Close;
- end;
- end;
- nbMain.PageIndex := nbMain.PageIndex + 1;
- end;
- procedure TAuthorizeForm.rbAuthFileClick(Sender: TObject);
- begin
- rbManual.Checked := False;
- leAuthFile.Enabled := True;
- btnBrowseAuthFile.Enabled := True;
- leAuthorize.Enabled := False;
- leAuthFile.SetFocus;
- end;
- procedure TAuthorizeForm.rbManualClick(Sender: TObject);
- begin
- rbAuthFile.Checked := False;
- leAuthFile.Enabled := False;
- btnBrowseAuthFile.Enabled := False;
- leAuthorize.Enabled := True;
- leAuthorize.SetFocus;
- end;
- procedure TAuthorizeForm.InternalAuthorize(AFile: string);
- var
- Key: array [0..1023] of Byte;
- fsFile: TFileStream;
- begin
- fsFile := TFileStream.Create(AFile, fmOpenRead);
- try
- fsFile.Read(Key, fsFile.Size);
- finally
- fsFile.Free;
- end;
- UserAuthorize(Key);
- end;
- procedure TAuthorizeForm.btnBrowseAuthFileClick(Sender: TObject);
- begin
- if OpenDialog1.Execute then
- leAuthFile.Text := OpenDialog1.FileName;
- end;
- function TAuthorizeForm.CheckAuthorizeFile(AFile: string): Integer;
- var
- fsFile: TFileStream;
- rFile: PAuthorizeFile;
- begin
- { fsFile := TFileStream.Create(AFile, fmOpenRead);
- New(rFile);
- ZeroMemory(rFile, SizeOf(TAuthorizeFile));
- try
- fsFile.Read(rFile^, SizeOf(TAuthorizeFile));
- if SameText(rFile.Head, HASP_AuthorizeFileHead) then
- Result := 1
- else
- Result := -1;
- finally
- Dispose(rFile);
- fsFile.Free;
- end;
- //} Result := 1;
- end;
- procedure TAuthorizeForm.InternalAuthorizeByText(AKey: string);
- var
- Key: array [0..1023] of Byte;
- fsFile: TFileStream;
- I: Integer;
- begin
- // if Length(AKey) <> Length_AuthorizeFile * 2 then
- // Exit;
- for I := 0 to (Length(AKey) div 2 - 1) do
- begin
- Key[I] := StrToInt('$' + AKey[2 * I + 1] + AKey[2 * I + 2]);
- end;
- UserAuthorize(Key);
- end;
- procedure TAuthorizeForm.Label9MouseEnter(Sender: TObject);
- begin
- TLabel(Sender).Font.Color := clHighLight;
- Screen.Cursor := crHandPoint;
- end;
- procedure TAuthorizeForm.Label9MouseLeave(Sender: TObject);
- begin
- TLabel(Sender).Font.Color := clHotLight;
- Screen.Cursor := crDefault;
- end;
- procedure TAuthorizeForm.Label9Click(Sender: TObject);
- begin
- Shellexecute(Handle, 'open', PChar(Format('mailto:"纵横产品注册中心"<support@smartcost.com.cn>?subject=SmartCost注册,序列号[%s]', [strHaspID])), 'SmartCost软件锁注册', '', SW_SHOW);
- end;
- end.
|