![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Процесор [D6, WinME]
Andrew22 © (2002-07-17 07:13:00)Как определить частоту проца в Delphi?
Nalsur (2002-07-29 11:58:00) [1]Ты эти функции на нажатие кнопки навесь, и не забудь функцию обозначить в Interface.
Kin (2002-07-25 22:01:00) [2]Пиши на gorn@r66.ru я тебе исходники скину! В Виде файлов Дельфийских!!!
Song (2002-07-24 10:32:00) [3]>>Где это всё писать? У меня не получилось.
Прямо в программе!
Andrew22 (2002-07-24 10:28:00) [4]Где это всё писать? У меня не получилось. Ни чего не пойму:-(
Andrew22 (2002-07-24 10:26:00) [5]Где это всё писать? У меня не получилось.
Song (2002-07-17 12:01:00) [6]
function GetCPUSpeed: Double;
const
DelayTime = 500;
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(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);
Result := TimerLo / (1000 * DelayTime);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format("Your CPU speed: %f MHz", [GetCPUSpeed]));
end;
Destroyer (2002-07-17 11:23:00) [7]Я привел выше функцию, которая вычисляет частоту проца в мегагерцах. Чего ж еще?
Andrew22 (2002-07-17 11:18:00) [8]А что делать?
Eugene Lachinov (2002-07-17 11:12:00) [9]В ME ключа нету
Andrew22 (2002-07-17 11:05:00) [10]А в Мелениуме то он какой?
Eugene Lachinov (2002-07-17 10:48:00) [11]По соседству оказалась Windows 95, в реестре информации нет, код указанный выше работает хорошо, показывает такое же значение что и в реестре, проверял на Windows 2000
Игорь Шевченко (2002-07-17 10:21:00) [12]Для NT - систем - один и тот же, других под рукой нет
Andrew22 (2002-07-17 10:18:00) [13]Спастбо, Игорёк хоть ты то мне помог. Так гараздо проще.
А этот ключ у всех один и тотже?
Игорь Шевченко (2002-07-17 10:13:00) [14]В реестре частота процессора записана
HKLM\HARDWARE\Description\System\CentralProcessor\0\~MHz
Andrew22 (2002-07-17 10:10:00) [15]Меня кто-то слышит или видит? Ответьте!!!
Andrew22 (2002-07-17 09:58:00) [16]А где это вс. писать? У меня не получилось...
Destroyer (2002-07-17 07:18:00) [17]ВРОДЕ ТАК:
function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi : DWORD;
TimerLo : DWORD;
PriorityClass : Integer;
Priority : Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
DW 310Fh // rdtsc
MOV TimerLo, EAX
MOV TimerHi, EDX
end;
Sleep(DelayTime);
asm
DW 310Fh // rdtsc
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;