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

Этот пример должен работать на всех версиях Windows

 

Code:

{$IFDEF WIN32}

 

function GetVersionEx(lpOs: pointer): BOOL; stdcall;

external 'kernel32' name 'GetVersionExA';

{$ENDIF}

 

procedure GetWindowsVersion(var Major: integer;

var Minor: integer);

var

{$IFDEF WIN32}

lpOS, lpOS2: POsVersionInfo;

{$ELSE}

l: longint;

{$ENDIF}

begin

{$IFDEF WIN32}

GetMem(lpOS, SizeOf(TOsVersionInfo));

lpOs^.dwOSVersionInfoSize := SizeOf(TOsVersionInfo);

while getVersionEx(lpOS) = false do begin

   GetMem(lpos2, lpos^.dwOSVersionInfoSize + 1);

   lpOs2^.dwOSVersionInfoSize := lpOs^.dwOSVersionInfoSize + 1;

   FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);

   lpOS := lpOs2;

end;

Major := lpOs^.dwMajorVersion;

Minor := lpOs^.dwMinorVersion;

FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);

{$ELSE}

l := GetVersion;

Major := LoByte(LoWord(l));

Minor := HiByte(LoWord(l));

{$ENDIF}

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

Major: integer;

Minor: integer;

begin

GetWindowsVersion(Major, Minor);

Memo1.Lines.Add(IntToStr(Major));

Memo1.Lines.Add(IntToStr(Minor));

end;

 

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

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

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

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


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