![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CPU [D7, Win95/98, WinME, NT4, Win2k, WinXP]
DeMan © (2003-08-23 00:34:00)
Как на дельфЕ узнать всё о CPU
Vlad Oshin (2003-08-26 12:16:00) [1]
http://www.podgoretsky.com
Анатолий, за рекламу мне будет чего-нибудь :)
y-soft (2003-08-25 17:05:00) [2]
Вот, случайно наткнулся:
http://www.carbonsoft.com/downloads.asp
NightAngel (2003-08-24 20:20:00) [3]
> default ©
Не в лом :)
http://developer.intel.com/design/pentium4/manuals/245471.htm
default (2003-08-24 19:54:00) [4]
NightAngel ©
кинь линк на это рук-во если не в лом
NightAngel (2003-08-24 15:44:00) [5]
> Как замутить CPUID в D5?
Точно так-же, как и в D7. ;)
NULL_POLNY (2003-08-24 07:35:00) [6]
Удалено модератором
Примечание: Вопросы в своей ветке.
NightAngel (2003-08-23 16:44:00) [7]
Точно так-же, с помощью - CPUID, см. IA-32 Intel® Architecture
Software Developer’s Manual Volume 2:Instruction Set Reference.
Sheng (2003-08-23 11:12:00) [8]
А как получить инфу типа той, что показывает AIDA ? Она показывает тип корпуса, размер первоко и второго кэша, тип и название проца, кол-во выводов на нём, напряжения питания, потребляемую мощность и ещё что-то там. Как ЭТО узнать ?
Novenkij (2003-08-23 04:32:00) [9]
type
TVendor = array [0..11] of Char;
TForm1 = class(TForm)
...
function GetCPUSpeed: string; // CPU speed
const
DelayTime = 500;
var
TimerHi : DWORD;
TimerLo : DWORD;
PriorityClass : Integer;
Priority : Integer;
ilt : Integer;
sss : String;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
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);
sss := floattostr(TimerLo / (1000.0 * DelayTime));
ilt := pos(",", sss);
sss := copy(sss, 1, ilt-1);
Result := sss;
end;
function GetCPUVendor : TVendor; assembler; register; // CPU vendor
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
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
POP EBX
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := GetCPUSpeed;
Edit2.Text := GetCPUVendor;
end;
Скорость и производитель. Точно работает под Win2000/XP.