unit CPU;
interface
uses
SysUtils;
type
TCPUID = array[1..4] of Longint;
TVendor = array[0..11] of char;
function GetCPUID: TCPUID; assembler; register;
function GetCPUVendor: TVendor; assembler; register;
function GetCPUInfo: string;
implementation
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 GetCPUVendor: TVendor; assembler; register;
asm
PUSH EBX {Save affected register}
PUSH EDI
MOV EDI,EAX {@Result (TVendor)}
MOV EAX,0
DW $A20F {CPUID Command}
MOV EAX,EBX
XCHG EBX,ECX {save ECX result}
MOV ECX,4
@1:
STOSB
SHR EAX,8
LOOP @1
MOV EAX,EDX
MOV ECX,4
@2:
STOSB
SHR EAX,8
LOOP @2
MOV EAX,EBX
MOV ECX,4
@3:
STOSB
SHR EAX,8
LOOP @3
POP EDI {Restore registers}
POP EBX
end;
function GetCPUInfo: string;
var
CPUID: TCPUID;
I: Integer;
S: TVendor;
begin
for I := Low(CPUID) to High(CPUID) do
CPUID[I] := -1;
CPUID := GetCPUID;
S := GetCPUVendor;
Result := S + IntToHex(CPUID[1], 8) + IntToHex(CPUID[2], 8)
+ IntToHex(CPUID[3], 8)
+ IntToHex(CPUID[4], 8);
end;
end.
» 转载请注明来源:网络蛀虫小窝 » 《找到一个读cpu串号的代码,delphi的,记录一下(申明是人家的代码)》» 本站地址:http://www.gomoth.com
- 您可能感兴趣的相关文章
- * Delphi中的线程类的解释
- * Delphi实现操作Foxpro的dbf文件,并导出整合实现txt和dbf互相转换
- * delphi中得到文件的大小
- * delphi里面控制Edit只能输入数字
- * Delphi 格式化函数format的用法
- * DELPHI控件 多页控制组件PageControl
标签: delphi