Содержание материала

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

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить