Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.011 c
1-62472
TsaturSoft
2003-01-10 09:16
2003.01.20
fsStayOnTop


3-62400
an
2002-12-25 16:02
2003.01.20
Проблемма с DbCtrlGrid


7-62885
VladTen
2002-11-05 03:56
2003.01.20
Помогите разобраться


14-62731
Ag2002
2002-12-27 17:53
2003.01.20
Компоненты RXLIB


1-62650
Vlad
2003-01-08 16:55
2003.01.20
процедура Insert





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский