Code: |
unit WAPIInfo;
interface
uses Registry, SysUtils, Windows;
procedure GetOSVerInfo (var OSID : DWORD; var OSStr : string); function OSisNT : boolean; procedure GetCPUInfo (var CPUID : DWORD; var CPUStr : string); procedure GetMemInfo (var MemStr : string);
implementation
procedure GetOSVerInfo (var OSID : DWORD; var OSStr : string); var OSVerInfo : TOSVersionInfo; Reg : TRegistry; s : string; begin OSVerInfo.dwOSVersionInfoSize := SizeOf (OSVerInfo); GetVersionEx (OSVerInfo); OSID := OSVerInfo.dwPlatformID; case OSID of VER_PLATFORM_WIN32S : OSStr := 'Windows 3+'; VER_PLATFORM_WIN32_WINDOWS : OSStr := 'Windows 95+'; VER_PLATFORM_WIN32_NT : begin OSStr := 'Windows NT'; Reg := TRegistry.Create; Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey ('SYSTEM\CurrentControlSet\Control\', False) then try s := Reg.ReadString ('ProductOptions') except s := '' end; if s = 'WINNT' then OSStr := OSStr + ' WorkStation' else if s = 'SERVERNT' then OSStr := OSStr + ' Server 3.5 & hi' else if s = 'LANMANNT' then OSStr := OSStr + ' Advanced server 3.1'; Reg.Free;
end; end; with OSVerInfo do OSStr := OSStr + Format (' %d.%d (выпуск %d)', [dwMajorVersion, dwMinorVersion, LoWord(dwBuildNumber)]); end;
function OSisNT : boolean; var s : string; i : DWORD; begin GetOSVerInfo (i, s); Result := (i = VER_PLATFORM_WIN32_NT); end;
procedure GetCPUInfo (var CPUID : DWORD; var CPUStr : string); var SI : TSystemInfo; begin GetSystemInfo (SI); CPUID := SI.dwProcessorType; case CPUID of 386: CPUStr := '80386-совместимый процессор'; 486: CPUStr := '80486-совместимый процессор'; 586: CPUStr := 'Pentium-совместимый процессор';
else CPUStr := 'Неизвестный процессор'; end; { case SI.wProcessorArchitecture of PROCESSOR_ARCHITECTURE_INTEL: ; MIPS ALPHA PPC UNKNOWN end;} end;
procedure GetMemInfo (var MemStr : string); var MemInfo : TMemoryStatus; begin MemInfo.dwLength := SizeOf (MemInfo); GlobalMemoryStatus (MemInfo); with MemInfo do MemStr := Format ('ОЗУ: %0.2f M (свободно %0.2f M)'#$d+ ' Файл подкачки: %0.2f M (свободно: %0.2f M)'#$d, [(dwTotalPhys div 1024) / 1024, (dwAvailPhys div 1024) / 1024, (dwTotalPageFile div 1024) / 1024, (dwAvailPageFile div 1024) / 1024]); end;
end. |
PS Возможно, эти процедуры не всегда дату возвращают но то что практически всегда для разных материнских/видео плат возвращаются разные значения - проверено, что мне собственно и требовалось.
Andrey Sorokin from sunny
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!