📄 regist.pas
字号:
unit regist;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TCPUID = array[1..4] of Longint;
TfrmRegist = class(TForm)
Edit1: TEdit;
Label1: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Bevel1: TBevel;
Image1: TImage;
Label3: TLabel;
Edit2: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmRegist: TfrmRegist;
function inputRegistCode(var codestr,sq_code:string):boolean;
function GetCPUID : TCPUID; assembler; register;
function GetHDSerialNumber: string;
implementation
uses main,U_Crypt;
{$R *.DFM}
function GetCPUID : TCPUID; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Resukt}
MOV EAX,1
DW $A20F {CPUID Command}
STOSD {CPUID[1]}
MOV EAX,EBX
STOSD {CPUID[2]}
MOV EAX,ECX
STOSD {CPUID[3]}
MOV EAX,EDX
STOSD {CPUID[4]}
POP EDI {Restore registers}
POP EBX
end;
function GetHDSerialNumber: string;
{$IFDEF WIN32}
var
pdw : pDWord;
mc, fl : dword;
{$ENDIF}
begin
{$IfDef WIN32}
New(pdw);
GetVolumeInformation(nil,nil,0,pdw,mc,fl,nil,0);
Result :=// pdw^;
IntToHex(HiWord(pdw^), 4) +
'-' +
IntToHex(LoWord(pdw^), 4);
dispose(pdw);
{$ELSE}
Result := inttostr(GetWinFlags);
{$ENDIF}
end;
function inputRegistCode(var codestr,sq_code:string):boolean;
begin
result:=false;
with TfrmRegist.Create(application) do
try
if showmodal=mrok then
begin
sq_code:=edit2.text;
codestr:=edit1.Text;
result:=true;
end;
finally
free;
end;
end;
procedure TfrmRegist.FormCreate(Sender: TObject);
var
CPUID : TCPUID;
I, P : Integer;
HD_Code,CPU_Code,s1,s2,s3,s4:string;
begin
//得到机器码
for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1;
CPUID := GetCPUID;
CPU_Code :=IntToHex(HiWord(CPUID[1]+CPUID[2]+CPUID[3]+CPUID[4]), 4) +
'-' +
IntToHex(LoWord(CPUID[1]+CPUID[2]+CPUID[3]+CPUID[4]), 4);
HD_Code:=GetHDSerialNumber;
//机器码=CPU_Code+'-'+HD_Code;
//得到注册申请码
p:=pos('-',CPU_Code);
s1:=copy(CPU_Code,1,p-1);
s2:=copy(CPU_Code,p+1,length(CPU_Code)-p);
p:=pos('-',HD_Code);
s3:=copy(HD_Code,1,p-1);
s4:=copy(HD_Code,p+1,length(HD_Code)-p);
s1:=encrypt2(s1,393);
s2:=encrypt2(s2,393);
s3:=encrypt2(s3,393);
s4:=encrypt2(s4,393);
edit2.text:=s1+'-'+s4+'-'+s3+'-'+s2;;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -