📄 flash.pas
字号:
unit flash;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Registry,jpeg,ExtCtrls,StdCtrls,Inifiles, DB, ADODB;
Const
ID_BIT = $200000;
type
TCPUID =array [1..4] of Longint;
TVendor = array [0..11] of char;
FUNCTION IsCPUID_Available : BOOLEAN; register;
FUNCTION GetCPUID : TCPUID; assembler; register;
Function Strcpuid(Cpuno:Longint):String;
type
Tflashform = class(TForm)
Image1: TImage;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
// Function Cpuid(Cpucode:Longint):string;
private
{ Private declarations }
Begindate,begintime:String;
Testnu,getsystemid,getregid:string;
Checksystemid,Checkregid:string;
public
{ Public declarations }
end;
var
flashform: Tflashform;
testfile:Tinifile;
implementation
uses SnackDM;
{$R *.dfm}
Function Strcpuid(Cpuno:Longint):String;
Var Regcpu:Longint;
begin
Regcpu:=((Cpuno*6)+20040829)-5027914;
Strcpuid:=InttoStr(Regcpu);
end;
FUNCTION IsCPUID_Available : BOOLEAN; register;
asm
PUSHFD {direct access to flags no possible, only via stack}
POP EAX {flags to EAX}
MOV EDX,EAX {save current flags}
XOR EAX,ID_BIT {not ID bit}
PUSH EAX {onto stack}
POPFD {from stack to flags, WITH not ID bit}
PUSHFD {back to stack}
POP EAX {get back to EAX}
XOR EAX,EDX {check IF ID bit affected}
JZ @exit {no, CPUID not availavle}
MOV AL,TRUE {Result=TRUE}
@exit:
END;
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 Tflashform.Cpuid(Cpucode:Longint):string;
//Var Reg:Longint;
//begin
//try
// Reg:=(((Cpucode+20040829)*29)+19760914)*25-19805027;
// Cpuid:=InttoStr(Reg);
//finally
// Abort;
// end;
//end;
//////////////////////////////////////////////////////////////
procedure Tflashform.FormCreate(Sender: TObject);
begin
AnimateWindow(Self.Handle,1000,AW_CENTER);
end;
procedure Tflashform.FormShow(Sender: TObject);
var Checkreg:TRegistry;
runnoid:string;
begin
image1.Picture.LoadFromFile(datam.SPflashpath);
if (FileExists('D:\Regedit.ini')=True) then
begin
Checkreg:=TRegistry.Create;
Checkreg.RootKey:=HKEY_CLASSES_ROOT;
if Checkreg.OpenKey('Setup Goldsea',True) then
begin
Checksystemid:=Checkreg.ReadString('Goldsea cpuid');
Checkregid:=Checkreg.ReadString('GoldSea WorkStation Regedit');
getsystemid:=Strcpuid(GetCPUID[1])+Strcpuid(GetCPUID[2])+Strcpuid(GetCPUID[3])+Strcpuid(GetCPUID[4]);
getregid:=IntToStr(GetCPUID[4])+IntToStr(GetCPUID[3])+IntToStr(GetCPUID[2])+IntToStr(GetCPUID[1]);
if (getsystemid<>Checksystemid) or (Checkregid<>getregid) then
begin
messagebeep(MB_ICONASTERISK);
messagebox(self.Handle,Pchar(''+DataM.SPlanguage.ReadString('msgbox','0004','')+''),Pchar(''+DataM.SPlanguage.ReadString('msgbox','0005','')+''),MB_ICONEXCLAMATION or MB_OK);
Application.Terminate;
end;
end;
end;
if (FileExists('D:\Regedit.ini')=False) then
begin
testfile:=Tinifile.Create('D:\Runtime.ini');
if (FileExists('D:\Runtime.ini')=False) then
begin
testfile.WriteString('Rumtimes','timeid','1');
end else
begin
runnoid:=testfile.ReadString('Rumtimes','timeid','');
if StrToInt(runnoid)<=100 then
begin
runnoid:=IntToStr(StrToInt(runnoid)+1);
testfile.WriteString('Rumtimes','timeid',''+runnoid+'');
end else
begin
messagebeep(0);
messagebox(self.Handle,Pchar(''+DataM.SPlanguage.ReadString('msgbox','0002','')+''),Pchar(''+DataM.SPlanguage.ReadString('msgbox','0003','')+''),MB_ICONEXCLAMATION or MB_OK);
Application.Terminate;
end;
FileSetAttr('D:\Runtime.ini',2);
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -