本文整理自网络,侵删。
以下方法还是通过汇编实现,不过针对x64做了调整,以支持x86和x64两种环境,代码如下:
// 获取cpu序列号
type
TCPUID = array [1 .. 4] of Longint;
function GetCPUID: TCPUID;
asm
{$IF Defined(CPUX86)}
push ebx
push edi
mov edi, eax
mov eax, 1
dw $A20F
stosd
mov eax, ebx
stosd
mov eax, ecx
stosd
mov eax, edx
stosd
pop edi
pop ebx
{$ELSEIF Defined(CPUX64)}
PUSH RBX
PUSH RDI
MOV RDI,RCX
MOV EAX,1
CPUID
mov [rdi], eax;
mov [rdi+4], ebx;
mov [rdi+8], ecx;
mov [rdi+12], edx;
POP RDI
POP RBX
{$IFEND}
(* 调用示例
var id: TCPUID;
id := GetCPUID;
ShowMessage(IntToHex(id[4], 8) + IntToHex(id[1], 8));
*)
end;
https://www.offeu.com/www/index_id_166.html
相关阅读 >>
Delphi2010读取mysql数据库text类型乱码的解决方案
Delphi xe 利用fmx控件的makescreenshot过程实现wait效果
Delphi concat 连接两个或多个字符串为一个字符串
更多相关阅读请进入《Delphi》频道 >>