procedure TForm1.Button1Click(Sender: TObject);
var
systeminfo: SYSTEM_INFO;
begin
Memo1.Lines.Clear();
//获得CPU型号
GetSystemInfo(systeminfo);
Memo1.Lines.Add('您的CPU类型是:' + inttostr(systeminfo.dwProcessorType));
end;
var
systeminfo: SYSTEM_INFO;
begin
Memo1.Lines.Clear();
//获得CPU型号
GetSystemInfo(systeminfo);
Memo1.Lines.Add('您的CPU类型是:' + inttostr(systeminfo.dwProcessorType));
end;
解决方案 »
- 急 请问:如何写代码,远程备份SQLServer数据库?在线等
- 为什么post后404错误
- adods.FieldByName('station').value从ACCESS中读到值是乱码的?ACCESS中STATION字段中存放的是汉字,这如何处理?
- 关于在DELPHI里对EXCEL的操作
- 怎样取AdoQuery查询出来的记录个数啊???急啊
- 谁有Delphi6关于WebServices编程的电子书籍下载啊?
- 请问如何保存webbrowser控件下载下来的网页的代码?
- 一直加不好引号
- 要使用TRegistry读写注册表要在Uses中写如什么关键字?
- 大家来讨论一下如何在delphi中用flash制作的动态菜单,按钮?(注意,不是播放FLASH动画)
- 请教一个关于listView的问题
- 一个可爱的问题Win2000下的API
procedure TForm1.Button1Click(Sender: TObject);
var rebx,recx,redx:dword;
str1:string;
begin
asm
mov eax,0
db 0fh,0a2h // cpuid
mov rebx,ebx
mov recx,ecx
mov redx,edx
end;
str1:=chr(rebx mod $100)+chr((rebx div $100) mod $100)+chr((rebx div
$10000) mod $100)+chr((rebx div $1000000) mod $100);
str1:=str1+chr(redx mod $100)+chr((redx div $100) mod $100)+chr((redx div
$10000) mod $100)+chr((redx div $1000000) mod $100);
str1:=str1+chr(recx mod $100)+chr((recx div $100) mod $100)+chr((recx div
$10000) mod $100)+chr((recx div $1000000) mod $100);edit1.text:=str1; {一执行此句就出错}
end;end.
eax, ebx都是比较重要的寄存器,建议你用它们之前先将其入栈(最好将所有寄存器入
栈比较保险:pushad/popad),在用完后弹出栈。
没有问题,你可以用一用,是别人给我的。
得CPU ID:
type
TCPUID = array[1..4] of Longint;
...
function GetCPUID : TCPUID; assembler; register;
asm
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
end;function GetCPUSpeed: Double;
const DelayTime = 100;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(DelayTime);
asm
DW 310FH
MOV TimerLo, EAX
MOV TimerHi, EDX
end;
Sleep(DelayTime);
asm
DW 310FH
SUB EAX, TimerLo
SBB EDX, TimerHi
MOV TimerLo, EAX
MOV TimerHi, EDX
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000.0 * DelayTime);
end;