📄 getcpuserialnumberp.~pas
字号:
unit GetCPUSerialNumberp;
interface
uses
Windows,SysUtils;
type
TCPUIDResult = packed record
EAX: Cardinal;
EBX: Cardinal;
ECX: Cardinal;
EDX: Cardinal;
end;
TCPUType = (ctPrimary, ctOverDrive, ctSecondary, ctUnknown);
function GetCPUSerialNumber: String;
const
CPUID_CPUSIGNATURE : DWORD = $1;
var
CPUID_Level: DWORD;
implementation
uses Unit1;
function ExecuteCPUID: TCPUIDResult; assembler;
asm
PUSH EBX
PUSH EDI
MOV EDI, EAX
MOV EAX, CPUID_LEVEL
DW $A20F
STOSD
MOV EAX, EBX
STOSD
MOV EAX, ECX
STOSD
MOV EAX, EDX
STOSD
POP EDI
POP EBX
end;
function GetCPUSerialNumber: String;
function SplitToNibble(ANumber: String): String;
var
rs,cs:string;
b:boolean;
begin
rs:=Copy(ANumber,0,4)+'-'+Copy(ANumber,5,4);
b:=False;
try
b:=Form1.FindComponent('Button33333')<>nil;
except
end;
Result:=rs;
end;
var
SerialNumber: TCPUIDResult;
begin
Result:='';
CPUID_Level:=CPUID_CPUSIGNATURE;
SerialNumber:=ExecuteCPUID;
Result:=SplitToNibble(IntToHex(SerialNumber.EAX,8))+'-';
CPUID_Level:=CPUID_CPUSIGNATURE;
SerialNumber:=ExecuteCPUID;
Result:=Result+SplitToNibble(IntToHex(SerialNumber.EDX,8))+'-';
Result:=Result+SplitToNibble(IntToHex(SerialNumber.ECX,8));
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -