![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Частота компа [Win95/98, WinME, NT4, Win2k, WinXP]
ASMiD © (2004-03-20 14:54:00)Сэры!
Подскажите плз, как получить частоту компьютера и тип видеокарты?
Ozone (2004-03-29 16:15:00) [1]Практически всю информацию о комп-ре дает WMI...
SEvgeniy (2004-03-29 15:36:00) [2]это,вероятно, частота с которой компьютер скачет по столу ж)
Digitman (2004-03-29 15:18:00) [3]
> VMcL
это частота такого компьютера, в составе которого ничего кроме мультивибратора, задающего некую одну-единственную периодическую импульсную последовательность, больше ничего нет .. даже того же блока питания ... ибо говорить о каких-то там "частотах", когда речь идет об импульсном БП, попросту глупо
VMcL (2004-03-29 14:47:00) [4]>>ASMiD (20.03.04 14:54)
Что такое "частота компьютера", стесняюсь спросить?
Raki (2004-03-28 14:31:00) [5]Эта функция определяет реальную частоту проца.(У меня при заявленной 1834 показывает от 1840 до 1880)
function GetCPUFrequency: word;
var
TimeStart: integer;
TimeStop: integer;
StartTicks: dword;
EndTicks: dword;
TotalTicks: dword;
cpuSpeed: dword;
NeverExit: Boolean;
begin
TimeStart:=0;
TimeStop:=0;
StartTicks:=0;
EndTicks:=0;
TotalTicks:=0;
cpuSpeed:=0;
NeverExit:=True;
TimeStart:=timeGetTime;
while NeverExit do
begin
TimeStop:=timeGetTime;
if ((TimeStop-TimeStart)>1) then
begin
asm
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
db $0F,$A2 /// cpuid
db $0F,$31 /// rdtsc
mov StartTicks,eax
end;
Break;
end;
end;
TimeStart:=TimeStop;
while NeverExit do
begin
TimeStop:=timeGetTime;
if ((TimeStop-TimeStart)>1000) then
begin
asm
xor eax,eax
xor ebx,ebx
xor ecx,ecx
xor edx,edx
db $0F,$A2 /// cpuid
db $0F,$31 /// rdtsc
mov EndTicks,eax
end;
Break;
end;
end;
TotalTicks:=EndTicks-StartTicks;
cpuSpeed:=TotalTicks div 1000000;
GetCPUFrequency:=cpuSpeed;
end;
А вот пример получения информации о видеокарте
procedure TForm1.button1click(Sender: TObject);
var
lpDisplayDevice: TDisplayDevice;
dwFlags: DWORD;
cc: DWORD;
begin
form1.memo1.Clear;
lpDisplayDevice.cb := sizeof(lpDisplayDevice);
dwFlags := 0;
cc := 0;
while EnumDisplayDevices(nil, cc, lpDisplayDevice, dwFlags) do
begin
Inc(cc);
form1.memo1.lines.add(lpDisplayDevice.DeviceString);
{Так же мы увидим дополнительную информацию в lpDisplayDevice}
end;
end;
Если понадобятся процедуры для нахождения более расширенной инфы про проц-скажи. Единственное, пока не могу найти процедуру для определения объема памяти видеокарты.