Descrição do processador |
Top Previous Next |
|
Essa função abaixo retorna algo do tipo: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz function GetProcessadorStr: string; var _eax, _ebx, _ecx, _edx: Longword; i: Integer; b: Byte; s, s1, s2, s3, s_all: string; begin Result := '';
asm mov eax,$80000000 db $0F,$A2 mov _eax,eax end;
if _eax > $80000000 then begin asm mov eax,$80000002 db $0F db $A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end;
s := ''; s1 := ''; s2 := ''; s3 := '';
for i := 0 to 3 do begin b := lo(_eax); s3 := s3 + chr(b); b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1 := s1 + chr(b); b := lo(_edx); s2 := s2 + chr(b); _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end;
s_all := s3 + s + s1 + s2;
asm mov eax,$80000003 db $0F db $A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end;
s := ''; s1 := ''; s2 := ''; s3 := '';
for i := 0 to 3 do begin b := lo(_eax); s3 := s3 + chr(b); b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1 := s1 + chr(b); b := lo(_edx); s2 := s2 + chr(b); _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end;
s_all := s_all + s3 + s + s1 + s2;
asm mov eax,$80000004 db $0F db $A2 mov _eax,eax mov _ebx,ebx mov _ecx,ecx mov _edx,edx end;
s := ''; s1 := ''; s2 := ''; s3 := '';
for i := 0 to 3 do begin b := lo(_eax); s3 := s3 + chr(b); b := lo(_ebx); s := s + chr(b); b := lo(_ecx); s1 := s1 + chr(b); b := lo(_edx); s2 := s2 + chr(b); _eax := _eax shr 8; _ebx := _ebx shr 8; _ecx := _ecx shr 8; _edx := _edx shr 8; end;
if s2[Length(s2)] = #0 then SetLength(s2, Length(s2) - 1);
Result := s_all + s3 + s + s1 + s2; end; end; |