怎样获得CPU的序号? 怎样获得CPU的序号? 请给我个详细的方法,若有函数的话,请给出用法。谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我不舍得贴出来分太少了typeTCPUID = array[1..4] of Longint;TVendor = array [0..11] of char;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 EBXend;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 EBXend;procedure TDemoForm.BitBtn1Click(Sender: TObject);var CPUID : TCPUID; I : Integer; S : TVendor;beginfor I := Low(CPUID) to High(CPUID) do CPUID[I] := -1; CPUID := GetCPUID; Label1.Caption := 'CPUID[1] = ' + IntToHex(CPUID[1],8); Label2.Caption := 'CPUID[2] = ' + IntToHex(CPUID[2],8); Label3.Caption := 'CPUID[3] = ' + IntToHex(CPUID[3],8); Label4.Caption := 'CPUID[4] = ' + IntToHex(CPUID[4],8); S := GetCPUVendor; Label5.Caption := S;end; 那我舍得,帮大家的忙是我的荣幸:http://218.56.11.178:8020/web/index.aspx-》下载基地-》例程-硬件控制-》内存CPU硬盘检测 jpyc(九品御厨) 不给我面子 unit Main;/////////////////////////////////////////////////////////////////////////////// (c) NPS, 1997 - Idea, realisation, adoptation IsCPUID_Available) //// [email protected] //// (c) Alex Abreu, 1997 - IsCPUID_Available source and idea //// [email protected] ///////////////////////////////////////////////////////////////////////////////interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons;type TDemoForm = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; GetButton: TBitBtn; CloseButton: TBitBtn; Bevel1: TBevel; Label5: TLabel; FLabel: TLabel; MLabel: TLabel; PLabel: TLabel; SLabel: TLabel; PValue: TLabel; FValue: TLabel; MValue: TLabel; SValue: TLabel; procedure GetButtonClick(Sender: TObject); end;var DemoForm: TDemoForm;implementation{$R *.DFM}const ID_BIT = $200000; // EFLAGS ID bittype TCPUID = array[1..4] of Longint; TVendor = array [0..11] of char;function IsCPUID_Available : Boolean; register;asm PUSHFD {direct access to flags no possible, only via stack} POP EAX {flags to EAX} MOV EDX,EAX {save current flags} XOR EAX,ID_BIT {not ID bit} PUSH EAX {onto stack} POPFD {from stack to flags, with not ID bit} PUSHFD {back to stack} POP EAX {get back to EAX} XOR EAX,EDX {check if ID bit affected} JZ @exit {no, CPUID not availavle} MOV AL,True {Result=True}@exit:end;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 EBXend;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 EBXend;procedure TDemoForm.GetButtonClick(Sender: TObject);var CPUID : TCPUID; I : Integer; S : TVendor;begin for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1; if IsCPUID_Available then begin CPUID := GetCPUID; Label1.Caption := 'CPUID[1] = ' + IntToHex(CPUID[1],8); Label2.Caption := 'CPUID[2] = ' + IntToHex(CPUID[2],8); Label3.Caption := 'CPUID[3] = ' + IntToHex(CPUID[3],8); Label4.Caption := 'CPUID[4] = ' + IntToHex(CPUID[4],8); PValue.Caption := IntToStr(CPUID[1] shr 12 and 3); FValue.Caption := IntToStr(CPUID[1] shr 8 and $f); MValue.Caption := IntToStr(CPUID[1] shr 4 and $f); SValue.Caption := IntToStr(CPUID[1] and $f); S := GetCPUVendor; Label5.Caption := 'Vendor: ' + S; end else begin Label5.Caption := 'CPUID not available'; end;end;end. delphi 虚拟键 急!谁知道哪里有免费的网吧管理系统源码下载! js中调用activex方法的问题 如何实现一次性查询 关于读取注册表键值权限的问题 我想给StringGrid做列字段名按钮的BUTTONClick过程,该怎样才可以实现呢?在线等 关于远程控制的问题(请高手指点) 看高手怎么优化这个程序,使运行速度提高 关于TListView的问题? 如何得出Richedit当前位置的行号和列号? 使用Qreport时,为何无法打印? 读取注册表中本地计算机名,怎么写程序?
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;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;procedure TDemoForm.BitBtn1Click(Sender: TObject);
var
CPUID : TCPUID;
I : Integer;
S : TVendor;
begin
for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1;
CPUID := GetCPUID;
Label1.Caption := 'CPUID[1] = ' + IntToHex(CPUID[1],8);
Label2.Caption := 'CPUID[2] = ' + IntToHex(CPUID[2],8);
Label3.Caption := 'CPUID[3] = ' + IntToHex(CPUID[3],8);
Label4.Caption := 'CPUID[4] = ' + IntToHex(CPUID[4],8);
S := GetCPUVendor;
Label5.Caption := S;
end;
-》下载基地-》例程-硬件控制-》内存CPU硬盘检测
// (c) NPS, 1997 - Idea, realisation, adoptation IsCPUID_Available) //
// [email protected] //
// (c) Alex Abreu, 1997 - IsCPUID_Available source and idea //
// [email protected] //
/////////////////////////////////////////////////////////////////////////////interfaceuses
Windows,
Messages,
SysUtils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
ExtCtrls,
StdCtrls,
Buttons;type
TDemoForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GetButton: TBitBtn;
CloseButton: TBitBtn;
Bevel1: TBevel;
Label5: TLabel;
FLabel: TLabel;
MLabel: TLabel;
PLabel: TLabel;
SLabel: TLabel;
PValue: TLabel;
FValue: TLabel;
MValue: TLabel;
SValue: TLabel;
procedure GetButtonClick(Sender: TObject);
end;var
DemoForm: TDemoForm;implementation{$R *.DFM}const
ID_BIT = $200000; // EFLAGS ID bit
type
TCPUID = array[1..4] of Longint;
TVendor = array [0..11] of char;function IsCPUID_Available : Boolean; register;
asm
PUSHFD {direct access to flags no possible, only via stack}
POP EAX {flags to EAX}
MOV EDX,EAX {save current flags}
XOR EAX,ID_BIT {not ID bit}
PUSH EAX {onto stack}
POPFD {from stack to flags, with not ID bit}
PUSHFD {back to stack}
POP EAX {get back to EAX}
XOR EAX,EDX {check if ID bit affected}
JZ @exit {no, CPUID not availavle}
MOV AL,True {Result=True}
@exit:
end;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;procedure TDemoForm.GetButtonClick(Sender: TObject);
var
CPUID : TCPUID;
I : Integer;
S : TVendor;
begin
for I := Low(CPUID) to High(CPUID) do CPUID[I] := -1;
if IsCPUID_Available then begin
CPUID := GetCPUID;
Label1.Caption := 'CPUID[1] = ' + IntToHex(CPUID[1],8);
Label2.Caption := 'CPUID[2] = ' + IntToHex(CPUID[2],8);
Label3.Caption := 'CPUID[3] = ' + IntToHex(CPUID[3],8);
Label4.Caption := 'CPUID[4] = ' + IntToHex(CPUID[4],8);
PValue.Caption := IntToStr(CPUID[1] shr 12 and 3);
FValue.Caption := IntToStr(CPUID[1] shr 8 and $f);
MValue.Caption := IntToStr(CPUID[1] shr 4 and $f);
SValue.Caption := IntToStr(CPUID[1] and $f);
S := GetCPUVendor;
Label5.Caption := 'Vendor: ' + S; end
else begin
Label5.Caption := 'CPUID not available';
end;
end;end.