getcpuserialnumberp.~pas

来自「供了获得CPU序列号和网 卡Mac地址的方法。 1.Delphi中可这个控件」· ~PAS 代码 · 共 71 行

~PAS
71
字号
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 + =
减小字号Ctrl + -
显示快捷键?