delphi 读cpu串号的代码


本文整理自网络,侵删。

 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.

相关阅读 >>

Delphi使用tnethttpclient:重定向后如何给出最终的url?

Delphi fmx 切换窗体最大化

Delphi 拷贝文件夹内所有内容

Delphi 关于 class helper for ... 语法

Delphi tedit 编辑框 中文使用说明

sqlite报错database is locked的解决办法

Delphi 构建时间 -encodedatetime … tryencodedatetime

Delphi memo1 自定义位置插入

Delphi创建桌面快捷方式及锁定任务栏等功能

Delphi调用javascript解析json

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...