Форум: "Система";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
ВнизОсновные характеристики Найти похожие ветки
← →
AquaSun1 (2002-10-31 07:39) [0]Мастера, подскажите как программно:
Выяснить тип ОС;
Частоту процессора;
и м.б. другие основные хар-ки компа?
Заранее спасибо.
← →
Ricky-Ticky-Tavy (2002-10-31 08:00) [1]Тип ОС - из реестра HKLM\Software\Microsoft\Windows\CurrentVersion
Частота процессора в win9x/me определяется функцией
function GetCPUSpeed: Double;
const
DelayTime = 500; // measure time in ms
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 // 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;
В win nt/2k частота есть в реестре
HKLM\Hardware\Description\System\CentralProcessor\0 ~MHz
Марка процессора в win9x/nt/me/2k тоже в реестре
HKLM\Hardware\Description\System\CentralProcessor\0 Identifier
Объм ОП в win 9x/nt/me/2k определяется ф-ей
var
MemStatus: TMemoryStatus;
...
begin
...
GlobalMemoryStatus(MemStatus);
...Caption:=MemStatus.dwTotalPhys;
...
end;
В реестре winnt/2k в HKLM\Hardware\DeviceMap\ валяется полный список оборудования
← →
Ricky-Ticky-Tavy (2002-10-31 09:33) [2]Дополнение: на www.sources.ru валяются исходники на С++, как получить список IDE/ATAPI.
← →
AquaSun1 (2002-11-01 04:49) [3]Спосибо Ricky-Ticky-Tavy! Завтра проверю.
← →
Akella (2002-11-01 08:25) [4]http://www.delphikingdom.com/mastering/wmi.htm#02
← →
AquaSun1 (2002-11-02 04:10) [5]У меня стоят 2 системы Win98 и Win2000Server:
Ветка HKLM\Software\Microsoft\Windows\CurrentVersion
подходит для Win98, а для Win2000Server информация о том,
что это Win2000Server находится в ветке
HKLM\Software\Microsoft\Windows NT\CurrentVersion
и как парадокс я должен знать какая у меня загружена система
для того, чтобы узнать какая у меня загружена система.
Причём в реестрах обоих систем имеются обе эти ветки.
Нет, конечно я могу посмотреть и туда и туда, и там где
находится параметр ProductName посмотреть что у нас за
система, но мне слабо верится, что нужно поступать именно так.
Может имеется какая нибудь команда WIN API, для просмотра
информации о системе. К сожалению у меня нет описания этих
команд.
← →
Azazello (2002-11-04 16:32) [6]Для определения операционной системы используй GetVersion()
Описание смотри в MSDN
← →
AquaSun1 (2002-11-09 03:03) [7]Действительно, есть функция GetVersionEx(). Разобравшись, у меня получилось следующее:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var OSVI:OSVERSIONINFO;
begin
OSVI.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
If GetVersionEx(OSVI) Then
Begin
Label1.Caption:="Объём информации = "+IntToStr(OSVI.dwOSVersionInfoSize);
Label2.Caption:="Version Number = "+IntToStr(OSVI.dwMajorVersion)+"."+IntToStr(OSVI.dwMinorVersion);
Label3.Caption:="Build = "+IntToStr(OSVI.dwBuildNumber);
Label4.Caption:="Platform Id = "+IntToStr(OSVI.dwPlatformId);
Label5.Caption:="Доп. информация = "+OSVI.szCSDVersion;
End;
end;
Правда единственное, что мне может быть здесь полезным, так это то, что в Win98 dwPlatformId=1, а в Win2000 dwPlatformId=2. Однако подозреваю, что и в Win95 dwPlatformId=1, а в каком-нибудь WinXP dwPlatformId=2 (пока правда не проверял :)). Поэтому неполучается выяснить точно тип ОС. А в реестр всётаки нехотелось бы лезть.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.01.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c